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


120

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

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


10
이것은 각 버전 제어 시스템에 대해 분할되어야합니다.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

답변:


63
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은 커밋에 대해 여러 작성자를 지원해야합니다.


1
그 사람의 이메일 주소를 모르면 어떻게합니까? GitHub 사용자 이름 등을 연결하는 방법은 없나요?
Aaron Franke

그들이 이전 커밋을 한 경우 다음 사항을 확인할 수 있습니다.git show <COMMIT_ID> --format=email
Gerry

2
이것은 이미 GitLab에서 일하게 될 것으로 보인다 (참조 gitlab.com/gitlab-org/gitlab-foss/merge_requests/17919를 )
Meiogordo

67

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일에 자신의 블로그에 대한 지원을 발표 : 공동 저자와 함께 커밋 ( 세부 사항 ).


8
이제 GitHub에서 지원 됩니다.
llrs

@Llopis 방금 블로그 게시물을보고 여기에 내 답변을 업데이트했습니다. 누군가가 더
빨라서 반갑습니다

나는 자식 플러그인을 쉽게 관리 할 수 있도록 간단한 쓴이 공저 - 트레일러 자동 : github.com/cac04/git-pair
c--

이 접근 방식은 kludge (참조 : Bazaar 방식 ) 처럼 보입니다 . 그리고 이런 방식으로 주저자가 있습니다. 제가 올바르게 이해한다면 공동 저자가 추가 한 것입니다.
Ruslan '

28

Bazaar의 경우 :

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

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


20

자식 쌍

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

당신을 위해.


13

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에서 작성자와 커미터의 차이점은 무엇입니까?


4

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

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

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


5
내가 볼 수 있듯이 이것은 커밋 메시지 끝에 "Co-authored-by :"와 "co-author <co-author-email>"을 추가하는 git 별칭입니다.
Kariem

3

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


4
이것은 Co-Authored-By내가 별도의 답변
Kariem


1

대부분의 공동 작성 도구는 자동 완성을 지원하지 않습니다. python3 (저는 개발자입니다)로 작성된 git-coco를 사용해 볼 수 있습니다 . git-coco자동 완성 및 자동 제안을 지원합니다. 다음은 샘플 작성자 의 스냅 샷 자동 완성입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.