我熟悉的所有版本控制系统的工作方式都是每个提交都归属于一个开发人员。敏捷工程的兴起,特别是结对编程,导致了两个开发人员对同一任务做出重大贡献的情况,例如一个错误修复。归属问题在工作环境中不会是什么大问题,因为项目经理会知道两个人在做什么,但是如果两个开源贡献者决定配对,并将一些代码推到一个不知道他们在一起工作的特定项目,那该怎么办呢?像Git这样的版本控制系统有没有办法将一个特定的补丁归属于多个开发者?
ippsafx71#
Commit title Commit body Co-authored-by: name <additional-dev-1@example.com> Co-authored-by: name <additional-dev-2@example.com>
例如Co-authored-by: Linus Torvalds <torvalds@linux-foundation.org>使用普通的作者或签名组(旧方法),你会看到它没有签名,知道你不能信任这个提交。但是,对共同作者没有签名过程。大多是过时的答案:一个解决方案是为这对设置一个名称:
Co-authored-by: Linus Torvalds <torvalds@linux-foundation.org>
git config user.name "Chris Wilson and John Smith"
以下是一个相关的bug报告和其他临时解决方案:Bug git-core: Git should support multiple authors for a commit
iezvtpos2#
git的一个约定是在提交消息的末尾使用 Co-authored-by(git kernel: Commit Message Conventions,指的是Openstack提交消息)。这也是Gerry's answer中链接的git-core bug的解决方案之一。
Co-authored-by: Some One <some.one@example.foo>
在2010年5月5日的评论中,Josh Triplett也建议在git中实现相应的支持。正如Llopis在评论中指出的那样,GitHub于2018年1月29日在他们的博客上宣布支持这一点:Commit together with co-authors(details)。
rks48beu3#
对于Bazaar:
bzr commit --author Joe --author Alice --author Bob
这些名称将与提交者名称分开显示在日志中。
643ylb084#
git-pair
https://github.com/pivotal/git_scripts#git-pair这个简单的脚本从Pivotal自动化Git配对编程属性。创建一个.pairs文件,如下所示:
.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
为了你
1yjd4xko5#
git区分了一个提交的author和committer [1]。你可以使用它作为一种变通方法,例如将你自己签名为committer,将你的合著者签名为author:
author
committer
GIT_COMMITTER_NAME='a' GIT_COMMITTER_EMAIL='a@a' git commit --author 'b <b@b>'
这样,你和你的合著者都会被记录在git历史中。运行git log --format=fuller,会给予你这样的东西:
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?](https://stackoverflow.com/questions/18750808/difference-between-author-and-committer-in-git)
0aydgbwb6#
Try git-mob,我们构建它是为了在提交时归属共同作者。例如:
git mob <initials of co-authors> git commit git solo
bxpogfeg7#
或者,在GitHub上有一个我贡献的open source project,它提供了一个很好的从命令行执行的方法。这个项目可以帮助你设置一个别名,以便创建共同自动提交,如下所示:$ git co-commit -m "Commit message" --co "co-author <co-author-email>"使用这种方法,您可以在没有图形界面的情况下创建共同创作的提交。
$ git co-commit -m "Commit message" --co "co-author <co-author-email>"
uqzxnwby8#
我们在每个提交消息的末尾添加我们的名字作为一个约定,例如:Implemented cool feature <Aneesh | Hiren>
Implemented cool feature <Aneesh | Hiren>
ddrv8njm9#
大多数的合著工具都不支持自动补全。你可以试试git-coco,它是用python3写的(我是开发者)。git-coco支持自动补全和自动建议。这里是一个快照autocomplete on sample authors
git-coco
9条答案
按热度按时间ippsafx71#
这种方法的一个问题是,您无法为这组开发人员创建签名密钥,因此您可以将任何人添加到此列表中,即使他们没有在功能上工作,GitHub也会将其视为他们。然而,在大多数情况下,这应该不是问题。
例如
Co-authored-by: Linus Torvalds <torvalds@linux-foundation.org>
使用普通的作者或签名组(旧方法),你会看到它没有签名,知道你不能信任这个提交。但是,对共同作者没有签名过程。
大多是过时的答案:
一个解决方案是为这对设置一个名称:
以下是一个相关的bug报告和其他临时解决方案:
Bug git-core: Git should support multiple authors for a commit
iezvtpos2#
git的一个约定是在提交消息的末尾使用 Co-authored-by(git kernel: Commit Message Conventions,指的是Openstack提交消息)。这也是Gerry's answer中链接的git-core bug的解决方案之一。
在2010年5月5日的评论中,Josh Triplett也建议在git中实现相应的支持。
正如Llopis在评论中指出的那样,GitHub于2018年1月29日在他们的博客上宣布支持这一点:Commit together with co-authors(details)。
rks48beu3#
对于Bazaar:
这些名称将与提交者名称分开显示在日志中。
643ylb084#
git-pair
https://github.com/pivotal/git_scripts#git-pair
这个简单的脚本从Pivotal自动化Git配对编程属性。
创建一个
.pairs
文件,如下所示:然后:
设置:
为了你
1yjd4xko5#
git区分了一个提交的
author
和committer
[1]。你可以使用它作为一种变通方法,例如将你自己签名为committer
,将你的合著者签名为author
:这样,你和你的合著者都会被记录在git历史中。运行
git log --format=fuller
,会给予你这样的东西:[1][Difference between author and committer in Git?](https://stackoverflow.com/questions/18750808/difference-between-author-and-committer-in-git)
0aydgbwb6#
Try git-mob,我们构建它是为了在提交时归属共同作者。
例如:
bxpogfeg7#
或者,在GitHub上有一个我贡献的open source project,它提供了一个很好的从命令行执行的方法。这个项目可以帮助你设置一个别名,以便创建共同自动提交,如下所示:
$ git co-commit -m "Commit message" --co "co-author <co-author-email>"
使用这种方法,您可以在没有图形界面的情况下创建共同创作的提交。
uqzxnwby8#
我们在每个提交消息的末尾添加我们的名字作为一个约定,例如:
Implemented cool feature <Aneesh | Hiren>
ddrv8njm9#
大多数的合著工具都不支持自动补全。你可以试试git-coco,它是用python3写的(我是开发者)。
git-coco
支持自动补全和自动建议。这里是一个快照autocomplete on sample authors