uTools-Manuals/docs/git/git interpret-trailers.html
2019-04-08 23:22:26 +08:00

1 line
16 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="c-markdown doc-markdown"><div class="doc-postil"><div class="c-markdown"><h2>名称</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>git-interpret-trailers  - 帮助将结构化信息添加到提交消息中</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>概要</h2></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">git interpret-trailers [--in-place] [--trim-empty] [(--trailer &lt;token&gt;[(=|:)&lt;value&gt;])…] [&lt;file&gt;…]</pre></div></div><div class="doc-postil"><div class="c-markdown"><h2>描述</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>在提交消息的其他自由格式部分的末尾帮助添加与RFC 822电子邮件标题类似的<code>trailers</code>行。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果没有指定&lt;file&gt;,该命令将从&lt;file&gt;参数或标准输入读取一些补丁或提交消息。然后该命令将使用该<code>--trailer</code>选项传递的参数(如果有)应用于每个输入文件的提交消息部分。结果发送到标准输出。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>一些配置变量控制<code>--trailer</code>参数应用于每个提交消息的方式以及提交消息中任何现有的尾部改变的方式。他们还可以自动添加一些预告片。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>默认情况下,一个<code>&lt;token&gt;=&lt;value&gt;</code><code>&lt;token&gt;:&lt;value&gt;</code>利用给定的参数<code>--trailer</code>在现有拖车之后将附加仅当最后拖车具有不同的(&lt;令牌&gt;&lt;&gt;)对(或如果不存在现有拖车)。&lt;token&gt;&lt;value&gt;部分将被修剪以删除开始和结尾的空白,并且生成的修剪后的&lt;token&gt;&lt;value&gt;将出现在消息中,如下所示:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">token: value</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>这意味着修剪后的&lt;token&gt;&lt;value&gt;将被分隔<code>': '</code>(一个冒号后跟一个空格)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>默认情况下,新的预告片将出现在所有现有预告片的末尾。如果没有现有的预告片,则新的预告片将出现在输出的提交消息部分之后,并且如果在提交消息部分末尾没有只有空格的行,则在新预告片之前将添加一个空白行。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>通过查找一组一条或多条i都是预告片ii至少包含一个由 Git 生成或用户配置的预告片并由至少25预告片组成的一组或多行的线从输入消息中提取现有预告片。该组必须在一个或多个空白或仅空白行之前。该组必须位于消息的末尾或者是以一行开头的行之前的最后一个非空白行<code>---</code>。这三个减号开始消息的补丁部分。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>阅读预告片时,令牌,分隔符和值之后可能有空格。标记和值中还可能有空格。该值可以分成多行,每个后续行以空格开头,如 RFC 822中的“折叠”。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>请注意,<code>trailers</code>不要遵循并且不打算遵循 RFC 822标头的许多规则。例如他们不遵循编码规则和其他许多规则。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>选项</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>--in-place</p></div></div><div class="doc-postil"><div class="c-markdown"><p>编辑文件。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--trim-empty</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果任何预告片的&lt;value&gt;部分只包含空格,则整个预告片将从结果消息中删除。这适用于现有的拖车以及新的拖车。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--trailer &lt;token&gt;(=|:)&lt;value&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>指定应作为尾部应用于输入消息的(&lt;token&gt;&lt;value&gt;)对。请参阅此命令的说明。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>配置变量</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>trailer.separators</p></div></div><div class="doc-postil"><div class="c-markdown"><p>该选项告诉哪些字符被识别为拖车分隔符。默认情况下,只有<code>:</code>被识别为一个尾部分隔符,除了<code>=</code>在命令行上始终接受,以便与其他 git 命令兼容。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>此选项给出的第一个字符将是当此预告片的配置中未指定另一个分隔符时使用的默认字符。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>例如,如果此选项的值是“(%)= $”,则仅使用格式线<code>&lt;token&gt;&lt;sep&gt;&lt;value&gt;</code>&lt;&gt;<code>%</code><code>=</code><code>$</code>然后空格将被视为拖车。并且<code>%</code>将作为默认分隔符,因此默认拖放器将显示为:(<code>&lt;token&gt;% &lt;value&gt;</code>一个百分号和一个空格将出现在令牌和值之间)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>trailer.where</p></div></div><div class="doc-postil"><div class="c-markdown"><p>这个选项告诉将添加一个新的预告片。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>这可以是<code>end</code>,这是默认的<code>start</code><code>after</code>或者<code>before</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果是<code>end</code>,则每个新的预告片将出现在现有预告片的末尾。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果是<code>start</code>,则每个新的预告片将出现在现有预告片的开始而不是结尾。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果是<code>after</code>,则每个新的预告片将在具有相同&lt;令牌&gt;的最后一个预告片之后出现。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果是<code>before</code>,则每个新的预告片将在具有相同的&lt;令牌&gt;的第一个预告片之前出现。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>trailer.ifexists</p></div></div><div class="doc-postil"><div class="c-markdown"><p>此选项可以选择在消息中至少有一个具有相同&lt;token&gt;的预告片时执行的操作。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>此选项的有效值是:<code>addIfDifferentNeighbor</code>(这是默认), <code>addIfDifferent</code> <code>add</code><code>replace</code><code>doNothing</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>使用时<code>addIfDifferentNeighbor</code>,只有在没有相同(&lt;token&gt;&lt;value&gt;)对的拖车位于新拖车添加行的上方或下方时,才会添加新拖车。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>使用时<code>addIfDifferent</code>,只有在消息中没有具有相同(&lt;token&gt;&lt;value&gt;)对的尾部时,才会添加新预告片。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>随着<code>add</code>,即使一些具有相同(&lt;token&gt;&lt;value&gt;)对的预告片已经在消息中,也会添加新的预告片。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>同时<code>replace</code>,具有相同&lt;令牌&gt;的现有预告片将被删除,新预告片将被添加。已删除的预告片将是最接近的一个(具有相同的&lt;令牌&gt;)以添加新的预告片。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>随着<code>doNothing</code>,什么都不会做;如果消息中已经有一个具有相同的&lt;token&gt;,则不会添加新的预告片。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>trailer.ifmissing</p></div></div><div class="doc-postil"><div class="c-markdown"><p>通过此选项,可以选择在消息中还没有具有相同&lt;token&gt;的任何预告片时执行的操作。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>此选项的有效值为:<code>add</code>(是默认值)和<code>doNothing</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>随着<code>add</code>,一个新的预告片将被添加。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>随着<code>doNothing</code>,什么都不会做。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>trailer.&lt;token&gt;.key</p></div></div><div class="doc-postil"><div class="c-markdown"><p><code>key</code>将在预告片中用来代替&lt;token&gt;。在这个键的最后,可以出现分隔符,然后出现一些空格字符。默认情况下,唯一有效的分隔符是<code>:</code>,但可以使用<code>trailer.separators</code>config变量更改。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果有分隔符,则在添加预告片时,将使用该键代替&lt;token&gt;和默认分隔符。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>trailer.&lt;token&gt;.where</p></div></div><div class="doc-postil"><div class="c-markdown"><p>此选项采用与<code>trailer.where</code>配置变量相同的值,并覆盖具有指定&lt;token&gt;的拖车的该选项指定的内容。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>trailer.&lt;token&gt;.ifexist</p></div></div><div class="doc-postil"><div class="c-markdown"><p>此选项采用与<code>trailer.ifexist</code>配置变量相同的值,并覆盖具有指定&lt;token&gt;的拖车的该选项指定的内容。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>trailer.&lt;token&gt;.ifmissing</p></div></div><div class="doc-postil"><div class="c-markdown"><p>此选项采用与<code>trailer.ifmissing</code>配置变量相同的值,并覆盖具有指定&lt;token&gt;的拖车的该选项指定的内容。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>trailer.&lt;token&gt;.command</p></div></div><div class="doc-postil"><div class="c-markdown"><p>该选项可用于指定将被调用以自动添加或修改具有指定的&lt;token&gt;的尾部的 shell 命令。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果指定了此选项,则行为就好像<code>&lt;token&gt;=&lt;value&gt;</code>在命令行的开始处添加了一个特殊参数,其中&lt;value&gt;将被视为指定命令的标准输出,并且任何前导和尾随空格都将被裁掉。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果命令包含<code>$ARG</code>字符串,则在命令启动之前,该字符串将替换为具有相同&lt;标记&gt;的现有预告片的&lt;&gt;部分(如果有)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果某些<code>&lt;token&gt;=&lt;value&gt;</code>参数也通过命令行传递,<code>trailer.&lt;token&gt;.command</code>则配置a时也会为每个参数执行该命令。并且这些参数的&lt;value&gt;部分(如果有的话)将用于替换<code>$ARG</code>命令中的字符串。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>示例</h2></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p><code>sign</code>使用<code>Signed-off-by</code>密钥配置预告片,然后将两个预告片添加到消息中:$ git config trailer.sign.key“Signed-off-by”$ cat msg.txt主题消息$ cat msg.txt | git interpret-trailers --trailer'signAlice alice@example.com '--trailer'signBob bob@example.com'subject message签名Alice alice@example.com签名鲍勃bob@example.com</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p>使用该<code>--in-place</code>选项即可编辑消息文件:</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><p>$ cat msg.txt主题信息签名Bob bob@example.com $ git interpret-trailers --trailer'Acked-byAlice alice@example.com'--in-place msg.txt $ cat msg .txt主题消息签名Bob bob@example.com Acked-byAlice alice@example.com</p></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p>提取最后一次提交的补丁,并添加<code>Cc</code><code>Reviewed-by</code>拖车到它:$ git的格式补丁-1 0001-foo.patch $ git的解释拖车--trailer“抄送爱丽丝alice@example.com ” --trailer '评论者Bob bob@example.com'0001-foo.patch &gt; 0001-bar.patch</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p><code>sign</code>只有当没有'Signed-off-by'时,才会使用命令配置尾部,以自动添加'Signed-off-by'和作者信息,并显示其工作原理:</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><p>$ git config trailer.sign.key "Signed-off-by: " $ git config trailer.sign.ifmissing add $ git config trailer.sign.ifexists doNothing $ git config trailer.sign.command 'echo "$(git config user.name) &lt;$(git config user.email)&gt;"' $ git interpret-trailers &lt;&lt;EOF &gt; EOF  Signed-off-by: Bob bob@example.com $ git interpret-trailers &lt;&lt;EOF &gt; Signed-off-by: Alice alice@example.com &gt; EOF  Signed-off-by: Alice alice@example.com</p></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p>在这个字符后面配置一个<code>fix</code>包含一个<code>#</code>没有空格的键的尾部,并显示它的工作原理:$ git config trailer.separators“”$ git config trailer.fix.key“Fix”$ echo“subject”| git interpret-trailers --trailer fix = 42主题修复42</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p><code>see</code>使用命令配置尾部以显示相关提交的主题,并显示其工作原理:</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><p>$ git config trailer.see.key“另请参阅”$ git config trailer.see.ifExists“替换”$ git config trailer.see.ifMissing“doNothing”$ git config trailer.see.command“git log -1  - -oneline --format = \“hs\”--abbrev-commit --abbrev = 14 \ $ ARG“$ git interpret-trailers &lt;&lt; EOF&gt; subject&gt;&gt; message&gt;&gt;请参阅HEAD〜2 &gt; EOF主题信息也参见fe3187489d69c4相关提交的主题</p></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p>使用一些空值的预告片配置提交模板(使用 sed 在预告结束处显示并保留尾部空格),然后配置一个<code>git interpret-trailers</code>用于删除空值预告片的提交消息钩子并添加<code>git-version</code>预告片:</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><p>$ sed -e 's/ Z$/ /' &gt;commit_template.txt &lt;&lt;EOF &gt; ***subject*** &gt; &gt; ***message*** &gt; &gt; Fixes: Z &gt; Cc: Z &gt; Reviewed-by: Z &gt; Signed-off-by: Z &gt; EOF $ git config commit.template commit_template.txt $ cat &gt;.git/hooks/commit-msg &lt;&lt;EOF &gt; #!/bin/sh &gt; git interpret-trailers --trim-empty --trailer "git-version: \$(git describe)" "\$1" &gt; "\$1.new" &gt; mv "\$1.new" "\$1" &gt; EOF $ chmod +x .git/hooks/commit-msg</p></div></div></div>