단일 커밋을 여러 개발자에게 어트 리뷰 션하는 방법은 무엇입니까? 쌍 프로그래밍의

내가 익숙한 모든 버전 제어 시스템이 작동하는 방식은 각 커밋이 단일 개발자에게 귀속된다는 것입니다. 애자일 엔지니어링, 특히 쌍 프로그래밍의 부상으로 두 개발자가 동일한 작업에 상당한 기여를 한 상황 (예 : 버그 수정)이 발생했습니다.

어트 리뷰 션 문제는 작업 환경에서 큰 문제가되지 않을 것입니다. 프로젝트 관리자는 쌍이 수행하는 작업을 인식 할 것이기 때문입니다. 그러나 두 명의 오픈 소스 기여자가 짝을 이루고 일부 코드를 푸시하기로 결정하면 어떨까요? 그들이 함께 일하고 있다는 것을 전혀 모르는 특정 프로젝트에. Git과 같은 버전 제어 시스템이 특정 패치를 여러 개발자에게 부여하는 방법이 있습니까?



답변

Commit title

Commit body

Co-authored-by: name <additional-dev-1@example.com>
Co-authored-by: name <additional-dev-2@example.com>

이 접근 방식의 한 가지 문제는이 개발자 그룹에 대해 서명 된 키를 만들 수 없기 때문에 기능에 대해 작업하지 않은 경우에도 기본적으로이 목록에 사람을 추가 할 수 있으며 Github는이를 마치 그렇게 처리 한 것처럼 처리합니다. 그러나 이는 대부분의 경우 문제가되지 않습니다.

예 : Co-authored-by: Linus Torvalds <torvalds@linux-foundation.org>

일반 작성자 또는 서명 그룹 (이전 방법)을 사용하면 서명되지 않았으며 커밋을 신뢰할 수 없다는 것을 알 수 있습니다. 그러나 공동 저자에 대한 서명 프로세스는 없습니다.


대부분 오래된 답변 :

한 가지 해결책은 쌍의 이름을 설정하는 것입니다.

git config user.name "Chris Wilson and John Smith"

다음은 다른 임시 솔루션과 관련된 버그 보고서입니다.

버그 git-core : Git은 커밋에 대해 여러 작성자를 지원해야합니다.


답변

git 규칙은 커밋 메시지의 끝에 Co-Authored-By 를 사용하는 것입니다 ( git kernel : Commit Message Conventions , Openstack Commit Messages 참조 ). 이것은 Gerry의 답변에 링크 된 git-core 버그대한 솔루션 중 하나이기도합니다.

Co-authored-by: Some One <some.one@example.foo>

2010 년 5 월 5 일 주석에서 Josh Triplett는 git에서 해당 지원을 구현할 것을 제안합니다.

으로 Llopis는 의견에서 지적, GitHub의이 2018년 1월 29일에 자신의 블로그에 대한 지원을 발표 : 공동 저자와 함께 커밋 ( 세부 사항 ).


답변

Bazaar의 경우 :

bzr commit --author Joe --author Alice --author Bob

이러한 이름은 커미터 이름과 별도로 로그에 표시됩니다.


답변

자식 쌍

https://github.com/pivotal/git_scripts#git-pair

Git 쌍 프로그래밍 속성을 자동화하는 Pivotal의이 간단한 스크립트입니다.

다음 .pairs과 같은 파일을 만듭니다 .

# .pairs - configuration for 'git pair'
pairs:
  # <initials>: <Firstname> <Lastname>[; <email-id>]
  eh: Edward Hieatt
  js: Josh Susser; jsusser
  sf: Serguei Filimonov; serguei
email:
  prefix: pair
  domain: pivotallabs.com
  # no_solo_prefix: true
#global: true

그리고:

git pair sp js

세트 :

user.name=Josh Susser & Sam Pierson
user.email=pair+jsusser+sam@pivotallabs.com

당신을 위해.


답변

git은 커밋 authorcommitter[1]을 구분합니다. 이를 해결 방법으로 사용할 수 있습니다. 예를 들어 자신을 다음으로 서명 committer하고 공동 작성자를 다음 으로 서명 합니다 author.

GIT_COMMITTER_NAME='a' GIT_COMMITTER_EMAIL='a@a' git commit --author 'b <b@b>'

이렇게하면 여러분과 공동 작성자가 모두 git 기록에 기록됩니다. 실행 git log --format=fuller하면 다음과 같은 결과를 얻을 수 있습니다.

commit 22ef837878854ca2ecda72428834fcbcad6043a2
Author:     b <b@b>
AuthorDate: Tue Apr 12 06:53:41 2016 +0100
Commit:     a <a@a>
CommitDate: Tue Apr 12 09:18:53 2016 +0000

    Test commit.

[1] Git에서 작성자와 커미터의 차이점은 무엇입니까?


답변

또는 GitHub에서 명령 줄에서 수행 할 수있는 좋은 방법을 제공 하는 오픈 소스 프로젝트 가 있습니다. 이 프로젝트는 다음과 같이 공동 자동 커밋을 생성하기 위해 별칭을 설정하는 데 도움이됩니다.

$ git co-commit -m "Commit message" --co "co-author <co-author-email>"

이 접근 방식을 사용하면 그래픽 인터페이스없이 공동 작성 커밋을 만들 수 있습니다.


답변

우리는 규칙으로 끝에 각 커밋 메시지에 이름을 추가합니다. Implemented cool feature <Aneesh | Hiren>