签名是进入Linux内核和其他一些项目的补丁所需的要求,但大多数项目实际上并不使用它。
它是在SCO诉讼(以及来自SCO的其他版权侵权指控,其中大部分他们实际上没有起诉)之后引入的,作为开发者原创证书。它用于说明您证明了您创建了相关的补丁,或者您证明您最好的知识是它是在适当的开源许可证下创建的,或者它已经由其他人根据这些条款提供给您。这可以帮助建立一个负责任地管理有关代码的版权状态的人员链,以确保未在适当的免费软件(开源)许可证下发布的受版权保护的代码不包含在内核中。
签名是提交信息末尾的一行,用于证明提交的作者身份。 其主要目的是提高跟踪谁做了什么的能力,特别是对于补丁。
示例提交:
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
author
字段和 committer
字段的存在是为了避免信息冗余。作者字段表示代码补丁的编写者,提交者字段则代表应用和推送该补丁的人。 - Leif GruenwoldtTLDR; 通常证明提交者有权在相同的许可下提交此作品,并同意开发者原点证书 (有关详细信息,请参见http://developercertificate.org/)。
david-a-wheeler
) 所做的更改。gitster
--于2016年2月5日合并至提交 7aae9ba)
git commit
手册页现在包含:
-s::
--signoff::
Signed-off-by
行。Signed-off-by
的意义取决于项目,但它通常证明提交者有权以相同的许可证提交此工作并同意开发人员原产地证书(有关更多信息,请参见 https://developercertificate.org)。
请注意,现在(适用于Git 2.15.x/2.16,2018年第一季度)此签名已经可以应用于git pull
命令。
请参见提交记录3a4d2c7 (作者:W. Trevor King (wking
),于2017年10月12日)。
(由Junio C Hamano -- gitster
--合并入提交记录fb4cd88,于2017年11月6日)
合并可以使用
pull
命令:向"git merge
"传递--signoff/--no-signoff
--signoff
,但是如果没有在pull中传递--signoff
,使用起来会很不方便;允许'pull
'使用这个选项并将其传递下去。
在 Git 2.33(2021 年第三季度)中,SubmitingPatches
文档进一步阐明了 signoff
的意图:DCO ( 对于开源项目而言,优先使用 DCO 而非 CLAs)。
查看提交 f003a91,提交 4523dc8(2021年7月22日)由Ævar Arnfjörð Bjarmason (avar
)完成。
(由Junio C Hamano -- gitster
--合并于提交 58705b4,2021年8月4日)
将讨论添加SOB拖车的部分移到讨论生成补丁本身的部分之上。
提交补丁
:将Signed-off-by的讨论移到"send"之上Signed-off-by: Ævar Arnfjörð Bjarmason
git format-patch
"(man)的过程后才意识到他们应该使用"git commit -s
"(man)或相应的方法。
提交补丁
现在包含在其 手册页面中:
[[签名]]
通过添加您的
Signed-off-by
标记证明您的工作为了改善跟踪谁做了什么,我们要求您认证您编写了补丁或有权根据相同许可证将其传递,方法是“签署”您的补丁。如果没有签署,则无法接受您的补丁。
仅当您认证以下 D-C-O 时:
[[dco]]
.开发者证书原点 1.1
组织所有者和存储库管理员现在可以要求开发人员在GitHub的Web界面上进行提交时进行签名,例如编辑文件或合并拉取请求。
此外,现在开发人员可以更轻松地在Web界面中完成签名,从而减少阻止合并的提交数量,并减少解决阻止提交所花费的时间。
启用该设置后,Web界面将通知开发人员他们的提交行为也构成了签名,如下所示。
与在命令行上使用Git的--signoff
选项一样,在Web界面中签名将自动将Signed-off-by:
文本附加到提交消息中。
这个问题已经有了一些好的答案,我将尝试添加更广泛的回答,即关于当前实践中这些类型的行/标头/尾部是关于什么的。不是特别关于签名头(它不是唯一的)。
标头或尾部(↑1),如“sign-off”(↑2),在像Git和Linux这样的项目中,实际上是提交的结构化元数据。所有这些都附加在提交消息的末尾,在消息正文的“自由格式”(非结构化)部分之后。这些通常是token-value(或key-value)对,由冒号和空格(:␣
)分隔。
就像我提到的,“sign-off”不是当前实践中唯一的尾部。例如,请参见与“Dirty Cow”有关的此提交:
mm: remove gup_flags FOLL_WRITE games from __get_user_pages()
This is an ancient bug that was actually attempted to be fixed once
(badly) by me eleven years ago in commit 4ceb5db9757a ("Fix
get_user_pages() race for write access") but that was then undone due to
problems on s390 by commit f33ea7f404e5 ("fix get_user_pages bug").
In the meantime, the s390 situation has long been fixed, and we can now
fix it by checking the pte_dirty() bit properly (and do it better). The
s390 dirty bit was implemented in abf09bed3cce ("s390/mm: implement
software dirty bits") which made it into v3.9. Earlier kernels will
have to look at the page state itself.
Also, the VM has become more scalable, and what used a purely
theoretical race back then has become easier to trigger.
To fix it, we introduce a new internal FOLL_COW flag to mark the "yes,
we already did a COW" rather than play racy games with FOLL_WRITE that
is very fundamental, and then use the pte dirty flag to validate that
the FOLL_COW flag is still valid.
Reported-and-tested-by: Phil "not Paul" Oester <kernel@linuxace.com>
Acked-by: Hugh Dickins <hughd@google.com>
Reviewed-by: Michal Hocko <mhocko@suse.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Willy Tarreau <w@1wt.eu>
Cc: Nick Piggin <npiggin@gmail.com>
Cc: Greg Thelen <gthelen@google.com>
Cc: stable@vger.kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
除了上述“签名”尾随语之外,还有:
其他项目(例如Gerrit)有其自己的标题和相关含义。
参见:https://git.wiki.kernel.org/index.php/CommitMessageConventions
我个人认为,尽管此特定元数据的初始动机是一些法律问题(根据其他答案),但这种元数据的实践已经超出了仅处理形成作者链的情况。
[↑1]:man git-interpret-trailers
[↑2]:它们有时也被称为“s-o-b”(首字母缩写),似乎是这样。