如何将单个提交归因于多个开发人员?

时间:2011-09-16 08:38:09

标签: git svn version-control bazaar

我熟悉的所有版本控制系统的工作方式是每个提交都归功于一个开发人员。敏捷工程的兴起,特别是结对编程,导致了两个开发人员对同一个任务做出了重大贡献的情况,例如错误修复。

归因问题在工作环境中不会太大,因为项目经理会意识到这对工作正在做的工作,但是如果两个开源贡献者决定配对和推送怎么办?将某些代码输出到一个不知道他们正在一起工作的特定项目。有没有办法像Git这样的版本控制系统将特定补丁归因于多个开发人员?

9 个答案:

答案 0 :(得分:61)

git约定是在提交消息的末尾使用 Co-Authored-By git kernel: Commit Message Conventions,引用Openstack Commit Messages)。对于one of the solutions

中链接的git-core bug,这也是Gerry's answer
Co-authored-by: Some One <some.one@example.foo>

在2010年5月5日的评论中,Josh Triplett还建议在git中实施相应的支持。

正如Llopis在评论中指出的那样,GitHub在2018年1月29日的博客上宣布了对此的支持:Commit together with co-authorsdetails)。

答案 1 :(得分:26)

Commit title

Commit body

Co-Authored-By: name <additional-dev-1@example.com>
Co-Authored-By: name <additional-dev-2@example.com>

这种方法的一个问题是你不能为这组开发人员创建一个签名密钥,所以你基本上可以将任何人添加到这个列表中,即使他们没有在一个功能上工作,github也会把它当作他们做到了。然而,在大多数情况下,这不应成为问题。

e.g。 Co-Authored-By: Linus Torvalds <torvalds@linux-foundation.org>

使用普通作者或签名组(旧方法),您会看到它没有签名,并且知道您不能信任提交。但是,共同作者没有签署过程。


大部分过时的回答:

一种解决方案是为该对设置名称:

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

以下是与其他临时解决方案相关的错误报告:

Bug git-core: Git should support multiple authors for a commit

答案 2 :(得分:24)

对于Bazaar:

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

这些名称将与提交者名称分开显示在日志中。

答案 3 :(得分:18)

<强> GIT-对

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

这个来自Pivotal的简单脚本可以自动化Git对编程归属。

您可以创建一个.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

给你。

答案 4 :(得分:12)

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] Difference between author and committer in Git?

答案 5 :(得分:2)

我们在最后将每个提交消息的名称添加为约定 例如:Implemented cool feature <Aneesh | Hiren>

答案 6 :(得分:2)

Try git-mob,我们建立了它,以便将共同作者归于提交。

E.g。

git mob <initials of co-authors>
git commit
git solo

答案 7 :(得分:2)

或者,GitHub上有一个open source project,它提供了一个从命令行执行此操作的好方法。此项目可帮助您设置别名,以便按如下方式创建共同提交的提交:

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

使用这种方法,您可以在没有图形界面的情况下创建共同创作的提交。

答案 8 :(得分:1)

大多数合著者工具不支持自动完成。您可以尝试用Python3编写的git-coco(我是开发人员)。 git-coco支持自动完成和自动建议。 这是快照 autocomplete on sample authors