668

Git中的Sign Off 功能有什么意义?

git commit --signoff

我应该什么时候使用它,如果有的话?

4

4 回答 4

625

Sign-off 是在 Linux 内核和一些其他项目中获取补丁的必要条件,但大多数项目实际上并不使用它。

它是在SCO 诉讼之后引入的(以及SCO的其他侵犯版权的指控,其中大部分他们从未真正上过法庭),作为开发者原产地证书。它用于表示您证明您已经创建了相关补丁,或者您证明据您所知,它是在适当的开源许可下创建的,或者它是由某人提供给您的否则根据这些条款。这可以帮助建立一个对相关代码的版权状态负责的人员链,以帮助确保未在适当的自由软件(开源)许可下发布的受版权保护的代码不包含在内核中。

于 2009-12-25T22:39:35.020 回答
86

Sign-off 是提交消息末尾的一行,用于证明谁是提交的作者。它的主要目的是改进对谁做了什么的跟踪,尤其是补丁。

示例提交:

Add tests for the payment processor.

Signed-off-by: Humpty Dumpty <humpty.dumpty@example.com>

如果用于开源项目,它应该包含用户真实姓名。

如果分支维护者需要稍微修改补丁以合并它们,他可以要求提交者重新比较,但这会适得其反。他可以调整代码并将他的签名放在最后,这样原作者仍然可以获得补丁的功劳。

Add tests for the payment processor.

Signed-off-by: Humpty Dumpty <humpty.dumpty@example.com>

[Project Maintainer: Renamed test methods according to naming convention.]
Signed-off-by: Project Maintainer <project.maintainer@example.com>

来源: http: //gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html

于 2012-12-26T17:36:13.620 回答
44

TLDR;通常证明提交者有权在同一许可下提交此作品并同意开发者原产地证书(有关更多信息,请参见http://developercertificate.org/)。


Git 2.7.1(2016 年 2 月)在David A. Wheeler()的提交 b2c150d(2016 年 1 月 5日)中阐明了这一点。(由Junio C Hamano 合并——提交 7aae9ba中,2016 年 2 月 5 日)david-a-wheeler
gitster

git commit手册页现在包括:

-s::
--signoff::

Signed-off-by在提交日志消息的末尾添加提交者的行。
签核的含义取决于项目,但它通常证明提交者有权在相同的许可下提交此作品并同意开发者原产地证书(有关更多信息,请参阅https://developercertificate.org)。


展开文档描述--signoff

修改各种文档(手册页)文件以更详细地解释什么--signoff意思。

这是受到“ lwn 文章 'Bottomley: DCO 的适度提议' ”(开发商原产地证书)的启发,其中 paulj 指出:

我对 DCO 的问题是,在git commit 中添加“ -s”参数并不意味着您甚至听说过 DCO(手册页git commit任何地方都没有提到 DCO),更不用说实际看到它了。

那么“”的存在如何signed-off-by以任何方式暗示发件人同意并承诺 DCO?结合事实,我在列表上看到了对没有 SOB 的补丁的回复,这些回复无非就是“重新发送这个,signed-off-by以便我可以提交它”。

扩展 git 的文档将更容易证明开发人员--signoff在使用它时理解了它。


请注意,此签核现在(对于 Git 2.15.x/2.16,2018 年第一季度)git pull也可用。

请参阅W. Trevor King ( )的提交 3a4d2c7(2017 年 10 月 12 日) 。(由Junio C Hamano 合并 -- --提交 fb4cd88中,2017 年 11 月 6 日)wking
gitster

pull: 传递--signoff/--no-signoff给“ git merge

merge 可以取--signoff,但不下拉--signoff,使用不方便;允许 ' pull' 选择并通过它。


在 Git 2.33(2021 年第三季度)中,该SubmitingPatches文档进一步(重新)说明了背后的意图signoff:DCO(对于开源项目,首选 CLA)。

请参阅Ævar Arnfjörð Bjarmason ( ) 的提交 f003a91提交 4523dc8(2021 年 7 月 22 日(由Junio C Hamano 合并 -- --提交 58705b4中,2021 年 8 月 4 日)avar
gitster

SubmittingPatches: 将 Signed-off-by 的讨论移到 "send" 上方

签字人:Ævar Arnfjörð Bjarmason

将讨论添加 SOB 预告片的部分移到讨论生成补丁本身的部分上方。
这是有道理的,因为我们不希望某人经历 " git format-patch" ( man )的过程,只是后来才意识到他们应该使用 " git commit -s" ( man )或等效的。

SubmittingPatches现在在其手册页中包含:

[[搁笔]]

Signed-off-by通过添加预告片来证明您的工作

为了更好地跟踪谁做了什么,我们要求您通过“签署”您的补丁来证明您编写了补丁或有权在与我们相同的许可下传递它。未经签字,我们不能接受您的补丁。

如果(且仅当)您证明以下 DCO:

[[dco]]

.开发商原产地证书 1.1

于 2016-02-06T06:22:20.293 回答
24
于 2016-12-15T13:06:20.893 回答