mor*_*ion 5 git security version-control commit gnupg
git(> = 1.7.9)的最新版本支持使用GPG签署单个提交。
是否可以追溯签署树中的所有提交?
追溯签署树中的所有提交?
是的:添加一个标签,您将签署该标签。
这实际上是签署提交时的首选选项:通过标签签署所有一组提交,而不是单独签署每个提交。
请参阅“如何在 post-receive hooks 中获取推送者的信息? ”。
请注意(2017 年 5 月更新),只有 Git 2.13.x/2.14(2017 年第 3 季度)才能完全修复签名过程,因为“ git cherry-pick”和排序器机制的其他用途,并错误处理了最后一行是不完整行的尾部块。此问题已得到修复,以便在完成现有的不完整行后
添加额外的签核等。
请参阅Jonathan Tan ( )的提交 44dc738(2017 年 4 月 26 日)。(由Junio C Hamano 合并 -- --在提交 6ebfa10中,2017 年 5 月 16 日)jhowtan
gitster
sequencer: 在添加页脚之前添加换行符
当遇到不以换行符结尾的提交消息时,定序器在确定是否应添加空行之前不会完成该行。
这会导致“(cherry picked...”和签核行有时与提交消息的最后一行出现在同一行。此行为是由提交 967dfd4引入的(“sequencer:使用预告片的预告片布局”,2016-11-29)。
has_conforming_footer()但是,恢复该提交并不能完全解决此问题:在该提交之前,如果没有终止换行符,则符合要求的页脚将被视为不符合要求 ,从而导致符合要求的页脚和不符合要求的页脚被同等对待当他们不应该的时候。解决此问题,无论是对于符合标准页脚还是不符合标准页脚,以及在 和 中
do_pick_commit(),append_signoff()如果在检查页脚是否符合标准之前,如果提交消息不以 1 结尾,则始终在提交消息中添加换行符,从而解决此问题。
使用 Git 2.29(2020 年第 4 季度),这将更加可靠。
请参阅Jeff King的提交 842385b、提交 9dad073、提交 26e28fe、提交 75d3bee、提交 20f4b04、提交 5b9427e、提交 8d2aa8d、提交 424e28f、提交 e885a84、提交 185e865 (2020 年 9 月 30 日)。(由Junio C Hamano 合并 -- --在提交 19dd352,2020 年 10 月 5 日)peff
gitster
sequencer:解析ignore_footer预告片时的处理签署人:杰夫·金
该
append_signoff()函数接受一个"ignore_footer"参数,该参数指定不应考虑的消息缓冲区末尾的字节数(它们不能包含预告片,并且预告片拼接在它们之前)。但要找到现有的预告片,它会调用
has_conforming_trailer(). 该函数需要一个ignore_footer参数,但自967dfd4d56(“sequencer:使用预告片的预告片布局”,2016-11-02,Git v2.12.0-rc0 -合并在批次 #2中列出)开始,该参数被完全忽略。我们使用的预告片接口采用单个字符串,没有选项告诉它使用该字符串的一部分。然而,由于我们有一个可变的
strbuf,我们可以通过简单地用 a 覆盖(然后恢复)边界来解决这个问题NUL。我不确定这是否真的会在实践中触发错误。
ignore_footer通过执行以下操作很容易获得非零值:Run Code Online (Sandbox Code Playgroud)git commit -F - --cleanup=verbatim <<-EOF subject body Signed-off-by: me # this looks like a comment, but is actually in the # message! That makes the earlier s-o-b fake. EOF git commit --amend -sgit-commit 调用
ignore_non_trailer()来计算“#”的剩余部分,它成为ignore_footer标题。但即使没有这个补丁它也能工作!这是因为预告片代码也会调用ignore_non_trailer()并跳过这些废话。所以它恰好起作用,因为唯一具有非零的调用者ignore_footer正在使用与预告片解析器内部使用的完全相同的函数。对于所有当前的呼叫者来说似乎都是如此,但没有任何保证。我们最好一开始就只将正确的缓冲区提供给预告片代码。