Von*_*onC 15
随着Git的1.7.9,2011十月,你如何git log --show-signature(中提到克里斯“的答案),但与2.10(Q3 2016) ,你可以简单的设置git config log.showSignature true,将与工作git-log,git-show,git-whatchanged和git-reflog。
为了方便搜索“ Signed-off-By”,您现在(Git 2.12,2017 年第一季度)可以仅使用提交消息的“拖车”部分进行登录。(预告片包括“ Signed-off-By”和其他“ Acknowledged By”消息)
请参阅Jacob Keller ( )提交的 b1d31c8和d9f31fb(2016 年 11 月 19 日)。
(由Junio C Hamano合并-- --在提交 f008159 中,2016 年 12 月 19 日,Git 2.12.0-rc0)jacob-kellergitster
pretty: 添加%(trailers)用于显示提交消息尾部的格式
此外%(subject),%(body)“ git log --pretty=format:...”学了新的占位符%(trailers)和%(contents:trailers)。
您还有git interpret-trailers,它刚刚在 Git 2.14.x/2.15(2017 年第三季度)中发展
请参阅Martin Ågren (``) 的提交 5a0d0c0(2017 年 8 月 20 日)。
见提交58311c6,提交cc1735c,提交a388b10,提交99e09da,提交0000239,提交fdbdb64,提交56c493e(2017年8月15日),并提交8abc898(2017年8月10日),由杰夫·王(peff)。
(由Junio C gitsterHamano合并-- --在commit 06cf4f2,2017 年 8 月 27 日)
“
git interpret-trailers”已经学会了“--parse”和其他一些选项,使脚本更容易从提交日志消息中获取现有的预告片行。
git log --pretty=format:%(trailers:only:unfold)
Run Code Online (Sandbox Code Playgroud)
实际上:
git log --pretty=format:%(trailers:only,unfold)
^^^^^
Run Code Online (Sandbox Code Playgroud)
请参阅Taylor Blau ( )提交的 84ff053 (2017 年 10 月 1 日)。(由Junio C Hamano合并-- --在提交 436b359 中,2017 年 10 月 7 日)ttaylorr
gitster
pretty.c:%(trailers)用“,”分隔“ ”参数
在准备向的 " " 参数添加一致的 "
%(trailers)" 原子选项时 ,将 " " in更改为使用 " " 而不是" " 来分隔子参数。git-for-each-ref(1)--format%(trailers)pretty.c,:多个子参数以“
%(trailers:unfold,only)”或“%(trailers:only,unfold)”的形式给出。此更改消除了“顶级”参数和提供给拖车原子本身的参数之间的歧义。它与“
%(upstream)”和“%(push)”原子的行为一致。
注意:这在 Git 2.20(2018 年第 4 季度)中更加健壮,因为“ git interpret-trailers”及其底层机制有一个错误的代码,它试图在提交日志消息后忽略补丁文本,这在各种代码路径中触发,这些代码路径总是单独获取日志消息和永远不会得到这样的输入。
请参阅Jeff King ( ) 的commit 66e83d9、commit ffce7f5、commit e5fba5d、commit 1688c9a、commit c188668、commit 00a21f5、commit a3b636e、commit 0d2db00(2018 年 8 月 23 日)。(由Junio C Hamano合并-- --在提交 fba9654 中,2018 年 9 月 17 日)peff
gitster
sequencer:---解析预告片时忽略“ ”分隔符
当定序器代码附加签收或挑选来源时,它使用默认的拖车解析选项,将“
---”视为提交消息的结尾。
因此,它可能会被包含该字符串的提交消息所迷惑,并且无法找到现有的尾部块。更令人困惑的是,实际的追加代码并不知道“---”,并且总是追加到字符串的末尾。
这可能会导致奇怪的结果。例如,在提交消息中附加一个签名,如下所示:
Run Code Online (Sandbox Code Playgroud)subject body --- these dashes confuse the parser! Signed-off-by: A导致输出具有最终块,如:
Run Code Online (Sandbox Code Playgroud)Signed-off-by: A Signed-off-by: A解析器认为消息的最后一行是“正文”,并忽略其他所有内容,声称没有预告片。
所以我们输出一个额外的换行符(错误)并添加一个重复的签名(也是错误的)。因为我们知道我们正在提供一个纯粹的提交消息,我们可以简单地告诉解析器忽略 "
---" 分隔符。
Git 2.22(2019 年第二季度)增加了几个选项:
见提交0b691d8,提交fd2015b,提交d9b936d,提交250bea0,提交3e3f347(2019年1月28日),提交4f732e0(2019年1月29日),以及提交4261775(2018年12月8日)由安德斯Waldenborg( )wanders。
(由Junio C gitsterHamano合并-- --在2019 年 3 月 7 日提交 42977bf 中)
pretty: 添加对separator选项的支持%(trailers)
默认情况下,拖车线以换行符 ('
\n')终止。
通过指定新的 'separator' 选项,它们将改为由用户提供的字符串分隔,并具有分隔符语义而不是终止符语义。
分隔符字符串可以包含文字格式代码,%n并%xNN允许它是难以键入的内容,例如%x00, 或逗号和结束括号,这会破坏解析。例如:
Run Code Online (Sandbox Code Playgroud)$ git log --pretty='%(trailers:key=Reviewed-by,valueonly,separator=%x00)'
和:
pretty: 添加对 "valueonly" 选项的支持%(trailers)
使用新的 "
key=" 选项%(trailers)通常无法显示密钥,因为根据定义,它已经知道在那里打印哪个预告片。
这个新的 "valueonly" 选项使它在打印预告片时省略了键。例如:
Run Code Online (Sandbox Code Playgroud)$ git show -s --pretty='%s%n%(trailers:key=Signed-off-by,valueonly)' aaaa881将会呈现:
Run Code Online (Sandbox Code Playgroud)upload-pack: fix broken if/else chain in config callback Jeff King <peff@peff.net> Junio C Hamano <gitster@pobox.com>
“ ( man ) ”的解析器在解析“ ”原子时过于松散,忘记了“ ”和“ ”是唯一允许的两种形式,这已在 Git 2.29(2020 年第 4 季度)中得到纠正。git for-each-ref --format=...%(trailers...)trailerstrailers:<modifiers>
请参阅Hariom Verma ( )提交的 2c22e10和提交 a8e0f50(2020 年 8 月 21 日)。(由Junio C Hamano合并-- --在提交 e177238 中,2020 年 8 月 31 日)harry-hov
gitster
ref-filter: 'contents:trailers' 如果:缺少则显示错误导师:Christian Couder
导师:Heba Waly
帮助:Eric Sunshine
签约:Hariom Verma
如果与“
trailers”原子一起使用并且在拖车参数之前缺少冒号,则“内容”原子不会显示任何错误。例如
%(contents:trailersonly)工作,而它不应该。这绝对不是预期的行为。
让我们修复这个错误。
在 Git 2.31(2021 年第一季度)中,“ --format=%(trailers)”机制得到增强,可以更轻松地设计用于机器消费的输出。
请参阅Ævar Arnfjörð Bjarmason ( ) 的提交 058761f、提交 9d87d5a、提交 8b966a0、提交 2762e17(2020 年 12 月 9 日)和提交 7c1f79f(2020 年 12 月 6 日)。(由Junio C Hamano合并-- --在提交 b62bbd3 中,2021 年 1 月 6 日)avar
gitster
pretty format %(trailers): 添加一个“keyonly”签字人:Ævar Arnfjörð Bjarmason
添加对“keyonly”的支持。这允许更容易地解析出键和值。在此之前,如果您不想对密钥的格式进行假设。您需要将其解析为例如:
Run Code Online (Sandbox Code Playgroud)--pretty=format:'%H%x00%(trailers:separator=%x00%x00)' \ '%x00%(trailers:separator=%x00%x00,valueonly)'然后通过查看这两个并从非 valueonly %(trailers) 行中减去值加上硬编码的“:”分隔符来继续推导键。现在可以简单地做:
Run Code Online (Sandbox Code Playgroud)--pretty=format:'%H%x00%(trailers:separator=%x00%x00,keyonly)' \ '%x00%(trailers:separator=%x00%x00,valueonly)'这至少将其简化为一个状态机,您可以在其中获得 N 个密钥并将它们与 N 个值相关联。更好的是有办法将“:”分隔符更改为易于机器读取的内容(键也可能包含“:”)。后续更改将增加对此的支持。
我真的没有一个仅用于“keyonly”的用例。我想在某些情况下它会很有用,因为“key=*”匹配不区分大小写,所以一个普通的“keyonly”会给你匹配的键的变体。我主要是添加它来解决与“valueonly”的不一致。
pretty-formats现在包括在其手册页中:
- '
keyonly[=<BOOL>]':只显示预告片的关键部分。- '
valueonly[=<BOOL>]':只显示预告片的价值部分。
和:
请参阅Ævar Arnfjörð Bjarmason ( ) 的提交 058761f、提交 9d87d5a、提交 8b966a0、提交 2762e17(2020 年 12 月 9 日)和提交 7c1f79f(2020 年 12 月 6 日)。(由Junio C Hamano合并-- --在提交 b62bbd3 中,2021 年 1 月 6 日)avar
gitster
pretty format %(trailers): 添加一个"key_value_separator"签字人:Ævar Arnfjörð Bjarmason
"key_value_separator"为"%(trailers)"漂亮格式添加一个选项,以配合现有的“分隔符”参数。
结合这两个选项,可以轻松生成机器可读(例如\0和\0\0分隔符)格式的输出。正如之前添加“
keyonly”的提交中所阐述的那样,在添加%(trailers)此"key_value_separator"选项之前从“ ”中提取结构化数据是不必要的乏味。
正如此处添加的测试所见,提取此数据现在变得微不足道。
pretty-formats现在包括在其手册页中:
- '
key_value_separator=<SEP>':指定在尾行之间插入的分隔符。如果没有给出这个选项,每个预告片键值对都用“:”分隔。
您可以git log --invert-grep --grep="Signed-off-By"在Git 2.4及以上版本中使用。(该--invert-grep选项是在 2.4 中添加的。)