如何为多个开发人员分配单个提交?

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

归属问题在工作环境中并不是什么大问题,因为项目经理会意识到这两个人正在做的工作,但是如果两个开源贡献者决定结成对子,并向一个特定的项目推出一些代码,而这些代码并不知道他们正在一起工作,那该怎么办呢。像 Git 这样的版本控制系统是否有办法为多个开发人员分配特定的补丁?

55061 次浏览
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 报告:

Bug Git-core: Git 应该支持多个作者进行提交

我们将自己的名字作为约定添加到每个提交消息的末尾 例句: Implemented cool feature <Aneesh | Hiren>

市集:

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

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

笨蛋

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 区分提交的 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 中作者和提交者的区别?

Git 约定是在提交消息(Git 内核: 提交消息约定,指的是 Openstack 提交消息)的末尾使用 共同作者。这也是 解决方案之一上的 Git-core 病毒链接在 格里的回答

Co-authored-by: Some One <some.one@example.foo>

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

正如 Llopis在一篇评论中指出的那样,GitHub 在2018年1月29日的博客上宣布了对此的支持: 与合著者一起承诺(详情)。

尝试 git-mob ,我们构建它是为了在提交时赋予合作作者权限。

例如。

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

或者,在 GitHub 上有一个 开放源码项目,我参与了这项工作,它提供了一种从命令行完成这项工作的好方法。这个项目帮助您设置一个别名,以便创建如下的共同自动提交:

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

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

大多数协同作者工具不支持自动完成。您可以尝试使用 python3编写的 Git-Coco(我是开发人员)。git-coco支持自动完成和自动建议。 这是一张快照 样本作者自动完成