我熟悉的所有版本控制系统的工作方式都是将每个提交归因于单个开发人员。敏捷工程的崛起,特别是配对编程,导致了这样一种情况:两位开发人员对同一个任务做出了重大贡献,例如修复缺陷。
在工作环境中,归因的问题不会太大,因为项目经理会知道配对人员正在做的工作,但是如果两个开源贡献者决定配对并向一个特定的项目推出一些代码,而该项目不知道他们正在一起工作,Git和其他版本控制系统是否有办法将某个补丁归因于多个开发人员?
我熟悉的所有版本控制系统的工作方式都是将每个提交归因于单个开发人员。敏捷工程的崛起,特别是配对编程,导致了这样一种情况:两位开发人员对同一个任务做出了重大贡献,例如修复缺陷。
在工作环境中,归因的问题不会太大,因为项目经理会知道配对人员正在做的工作,但是如果两个开源贡献者决定配对并向一个特定的项目推出一些代码,而该项目不知道他们正在一起工作,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"
这里有一个相关的错误报告,其中提供了其他临时解决方案:
Bug git-core: Git should support multiple authors for a commit
git show <COMMIT_ID> --format=email
- GerryCo-authored-by: Some One <some.one@example.foo>
对于Bazaar:
bzr commit --author Joe --author Alice --author Bob
这些名称将与提交者的名称分开显示在日志中。
git-pair
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
为了你。
git区分提交的作者
和提交者
[1]。您可以将其用作解决方法,例如将自己标记为提交者
,将共同作者标记为作者
:
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.
或者,你可以在GitHub上贡献的开源项目中找到一种很好的方法来通过命令行进行操作。该项目可以帮助你设置别名,以便创建协同作者提交,如下所示:
$ git co-commit -m "提交信息" --co "协同作者 <协同作者电子邮件>"
使用这种方法,你可以在没有图形界面的情况下创建协同作者提交。
作为一种惯例,我们在每个提交信息的结尾处添加我们的名字。
例如:实现酷炫功能 <Aneesh | Hiren>
这里保留了HTML标签。
git-coco
支持自动完成和自动建议。这里是一个快照 autocomplete on sample authors。