我熟悉的所有版本控制系统的工作方式是每个提交都归功于一个开发人员。敏捷工程的兴起,特别是结对编程,导致了两个开发人员对同一任务做出了重大贡献的情况,例如错误修复。
归因问题在工作环境中不会有太大的影响,因为项目经理会知道这对工作正在做的工作,但是如果两个开源贡献者决定配对并推出一些代码呢?对于一个不知道他们在一起工作的特定项目。有没有办法像Git这样的版本控制系统将特定补丁归因于多个开发人员?
Commit title
Commit body
Co-Authored-By: name <[email protected]>
Co-Authored-By: name <[email protected]>
这种方法的一个问题是你不能为这组开发人员创建一个签名密钥,因此你可以基本上将任何人添加到这个列表中,即使他们没有在一个功能上工作,github也会像对待那样对待它。然而,在大多数情况下,这不应成为问题。
例如Co-Authored-By: Linus Torvalds <[email protected]>
使用普通作者或签名组(旧方法),您会看到它没有签名,并且知道您不能信任提交。但是,共同作者没有签署过程。
大多数过时的答案:
一种解决方案是为该对设置名称:
git config user.name "Chris Wilson and John Smith"
以下是与其他临时解决方案相关的错误报告:
Bug git-core: Git should support multiple authors for a commit
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 <[email protected]>
在2010年5月5日的评论中,Josh Triplett还建议在git中实现相应的支持。
正如Llopis在评论中指出的那样,GitHub在2018年1月29日的博客上宣布了对此的支持:Commit together with co-authors(details)。
对于Bazaar:
bzr commit --author Joe --author Alice --author Bob
这些名称将与提交者名称分开显示在日志中。
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
[email protected]
为了你。
git区分了提交的author
和committer
[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.
我们在最后将每个提交消息的名称添加为约定,例如:Implemented cool feature <Aneesh | Hiren>
或者,在GitHub上有一个open source project,它提供了一个从命令行执行此操作的好方法。此项目可帮助您设置别名,以便创建共同提交的提交,如下所示:
$ git co-commit -m "Commit message" --co "co-author <co-author-email>"
使用此方法,您可以在没有图形界面的情况下创建共同创作的提交。