{"thread":{"id":"65217","subject":"[PATCH 0/3] doc: interpret-trailers: convert to synopsis and update options","startedAt":"2026-03-11T22:31:22Z","lastAt":"2026-03-16T21:50:14Z","messageCount":17,"participants":["kristofferhaugsbakk@fastmail.com","Junio C Hamano","Kristoffer Haugsbakk","Jean-Noël AVILA"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"538693","messageId":"CV_doc_interpret-tr_synopsis.48a@msgid.xyz","threadId":"65217","inReplyTo":null,"subject":"[PATCH 0/3] doc: interpret-trailers: convert to synopsis and update options","fromName":"","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2026-03-11T22:31:03Z","receivedAt":"2026-03-11T22:31:22Z","isPatch":true,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"From: Kristoffer Haugsbakk <code@khaugsbakk.name>\n\nTopic name: doc-interpret-trailers-1\n\nTopic summary: Convert to synopsis style and update options.\n\n[3/1] doc: interpret-trailers: convert to synopsis style\n[3/2] doc: interpret-trailers: normalize and fill out options\n[3/3] doc: config: convert trailers section to synopsis style\n\n Documentation/config/trailer.adoc         | 121 +++++++--------\n Documentation/git-interpret-trailers.adoc | 170 ++++++++++++----------\n 2 files changed, 156 insertions(+), 135 deletions(-)\n\n\nbase-commit: 67ad42147a7acc2af6074753ebd03d904476118f\n-- \n2.53.0.32.gf6228eaf9cc\n\n"},{"id":"538694","messageId":"doc_interpret-tr_synopsis.48b@msgid.xyz","threadId":"65217","inReplyTo":"CV_doc_interpret-tr_synopsis.48a@msgid.xyz","subject":"[PATCH 1/3] doc: interpret-trailers: convert to synopsis style","fromName":"","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2026-03-11T22:31:04Z","receivedAt":"2026-03-11T22:31:40Z","isPatch":true,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"From: Kristoffer Haugsbakk <code@khaugsbakk.name>\n\nSee e.g. 0ae23ab5 (doc: convert git worktree to synopsis style,\n2025-10-05) for the markup rules for this style.\n\nThere aren’t many subtleties to the transformation of this doc since it\ndoesn’t use any advanced constructs. The only thing is that `\": \"` is\nused instead of `': '` to refer to effective inline-verbatim with\na space (␠). I also use (_) for emphasis although (') gives the\nsame result.\n\nAlso prefer linking to Git commands instead of saying\ne.g. `git format-patch`.\n\nSigned-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>\n---\n Documentation/git-interpret-trailers.adoc | 126 +++++++++++-----------\n 1 file changed, 63 insertions(+), 63 deletions(-)\n\ndiff --git a/Documentation/git-interpret-trailers.adoc b/Documentation/git-interpret-trailers.adoc\nindex fd335fe772a..8a6c1bff472 100644\n--- a/Documentation/git-interpret-trailers.adoc\n+++ b/Documentation/git-interpret-trailers.adoc\n@@ -7,14 +7,14 @@ git-interpret-trailers - Add or parse structured information in commit messages\n \n SYNOPSIS\n --------\n-[verse]\n-'git interpret-trailers' [--in-place] [--trim-empty]\n+[synopsis]\n+git interpret-trailers [--in-place] [--trim-empty]\n \t\t\t[(--trailer (<key>|<key-alias>)[(=|:)<value>])...]\n \t\t\t[--parse] [<file>...]\n \n DESCRIPTION\n -----------\n-Add or parse 'trailer' lines that look similar to RFC 822 e-mail\n+Add or parse _trailer_ lines that look similar to RFC 822 e-mail\n headers, at the end of the otherwise free-form part of a commit\n message. For example, in the following commit message\n \n@@ -27,10 +27,10 @@ Signed-off-by: Alice <alice@example.com>\n Signed-off-by: Bob <bob@example.com>\n ------------------------------------------------\n \n-the last two lines starting with \"Signed-off-by\" are trailers.\n+the last two lines starting with `Signed-off-by` are trailers.\n \n This command reads commit messages from either the\n-<file> arguments or the standard input if no <file> is specified.\n+_<file>_ arguments or the standard input if no _<file>_ is specified.\n If `--parse` is specified, the output consists of the parsed trailers\n coming from the input, without influencing them with any command line\n options or configuration variables.\n@@ -43,7 +43,7 @@ to each input file. The result is emitted on the standard output.\n \n This command can also operate on the output of linkgit:git-format-patch[1],\n which is more elaborate than a plain commit message. Namely, such output\n-includes a commit message (as above), a \"---\" divider line, and a patch part.\n+includes a commit message (as above), a `---` divider line, and a patch part.\n For these inputs, the divider and patch parts are not modified by\n this command and are emitted as is on the output, unless\n `--no-divider` is specified.\n@@ -53,24 +53,24 @@ are applied to each input and the way any existing trailer in\n the input is changed. They also make it possible to\n automatically add some trailers.\n \n-By default, a '<key>=<value>' or '<key>:<value>' argument given\n+By default, a `<key>=<value>` or `<key>:<value>` argument given\n using `--trailer` will be appended after the existing trailers only if\n-the last trailer has a different (<key>, <value>) pair (or if there\n-is no existing trailer). The <key> and <value> parts will be trimmed\n+the last trailer has a different (_<key>_, _<value>_) pair (or if there\n+is no existing trailer). The _<key>_ and _<value>_ parts will be trimmed\n to remove starting and trailing whitespace, and the resulting trimmed\n-<key> and <value> will appear in the output like this:\n+_<key>_ and _<value>_ will appear in the output like this:\n \n ------------------------------------------------\n key: value\n ------------------------------------------------\n \n-This means that the trimmed <key> and <value> will be separated by\n-`': '` (one colon followed by one space).\n+This means that the trimmed _<key>_ and _<value>_ will be separated by\n+\": \" (one colon followed by one space).\n \n-For convenience, a <key-alias> can be configured to make using `--trailer`\n+For convenience, a _<key-alias>_ can be configured to make using `--trailer`\n shorter to type on the command line. This can be configured using the\n-'trailer.<key-alias>.key' configuration variable. The <keyAlias> must be a prefix\n-of the full <key> string, although case sensitivity does not matter. For\n+`trailer.<key-alias>.key` configuration variable. The _<keyAlias>_ must be a prefix\n+of the full _<key>_ string, although case sensitivity does not matter. For\n example, if you have\n \n ------------------------------------------------\n@@ -91,13 +91,13 @@ least one Git-generated or user-configured trailer and consists of at\n least 25% trailers.\n The group must be preceded by one or more empty (or whitespace-only) lines.\n The group must either be at the end of the input or be the last\n-non-whitespace lines before a line that starts with '---' (followed by a\n+non-whitespace lines before a line that starts with `---` (followed by a\n space or the end of the line).\n \n When reading trailers, there can be no whitespace before or inside the\n-<key>, but any number of regular space and tab characters are allowed\n-between the <key> and the separator. There can be whitespaces before,\n-inside or after the <value>. The <value> may be split over multiple lines\n+_<key>_, but any number of regular space and tab characters are allowed\n+between the _<key>_ and the separator. There can be whitespaces before,\n+inside or after the _<value>_. The _<value>_ may be split over multiple lines\n with each subsequent line starting with at least one whitespace, like\n the \"folding\" in RFC 822. Example:\n \n@@ -111,77 +111,77 @@ rules for RFC 822 headers. For example they do not follow the encoding rule.\n \n OPTIONS\n -------\n---in-place::\n+`--in-place`::\n \tEdit the files in place.\n \n---trim-empty::\n-\tIf the <value> part of any trailer contains only whitespace,\n+`--trim-empty`::\n+\tIf the _<value>_ part of any trailer contains only whitespace,\n \tthe whole trailer will be removed from the output.\n \tThis applies to existing trailers as well as new trailers.\n \n---trailer <key>[(=|:)<value>]::\n-\tSpecify a (<key>, <value>) pair that should be applied as a\n+`--trailer <key>[(=|:)<value>]`::\n+\tSpecify a (_<key>_, _<value>_) pair that should be applied as a\n \ttrailer to the inputs. See the description of this\n \tcommand.\n \n---where <placement>::\n---no-where::\n+`--where <placement>`::\n+`--no-where`::\n \tSpecify where all new trailers will be added.  A setting\n-\tprovided with '--where' overrides the `trailer.where` and any\n+\tprovided with `--where` overrides the `trailer.where` and any\n \tapplicable `trailer.<keyAlias>.where` configuration variables\n-\tand applies to all '--trailer' options until the next occurrence of\n-\t'--where' or '--no-where'. Upon encountering '--no-where', clear the\n-\teffect of any previous use of '--where', such that the relevant configuration\n+\tand applies to all `--trailer` options until the next occurrence of\n+\t`--where` or `--no-where`. Upon encountering `--no-where`, clear the\n+\teffect of any previous use of `--where`, such that the relevant configuration\n \tvariables are no longer overridden. Possible placements are `after`,\n \t`before`, `end` or `start`.\n \n---if-exists <action>::\n---no-if-exists::\n+`--if-exists <action>`::\n+`--no-if-exists`::\n \tSpecify what action will be performed when there is already at\n-\tleast one trailer with the same <key> in the input.  A setting\n-\tprovided with '--if-exists' overrides the `trailer.ifExists` and any\n+\tleast one trailer with the same _<key>_ in the input.  A setting\n+\tprovided with `--if-exists` overrides the `trailer.ifExists` and any\n \tapplicable `trailer.<keyAlias>.ifExists` configuration variables\n-\tand applies to all '--trailer' options until the next occurrence of\n-\t'--if-exists' or '--no-if-exists'. Upon encountering '--no-if-exists', clear the\n-\teffect of any previous use of '--if-exists', such that the relevant configuration\n+\tand applies to all `--trailer` options until the next occurrence of\n+\t`--if-exists` or `--no-if-exists`. Upon encountering `--no-if-exists`, clear the\n+\teffect of any previous use of `--if-exists`, such that the relevant configuration\n \tvariables are no longer overridden. Possible actions are `addIfDifferent`,\n \t`addIfDifferentNeighbor`, `add`, `replace` and `doNothing`.\n \n---if-missing <action>::\n---no-if-missing::\n+`--if-missing <action>`::\n+`--no-if-missing`::\n \tSpecify what action will be performed when there is no other\n-\ttrailer with the same <key> in the input.  A setting\n-\tprovided with '--if-missing' overrides the `trailer.ifMissing` and any\n+\ttrailer with the same _<key>_ in the input.  A setting\n+\tprovided with `--if-missing` overrides the `trailer.ifMissing` and any\n \tapplicable `trailer.<keyAlias>.ifMissing` configuration variables\n-\tand applies to all '--trailer' options until the next occurrence of\n-\t'--if-missing' or '--no-if-missing'. Upon encountering '--no-if-missing',\n-\tclear the effect of any previous use of '--if-missing', such that the relevant\n+\tand applies to all `--trailer` options until the next occurrence of\n+\t`--if-missing` or `--no-if-missing`. Upon encountering `--no-if-missing`,\n+\tclear the effect of any previous use of `--if-missing`, such that the relevant\n \tconfiguration variables are no longer overridden. Possible actions are `doNothing`\n \tor `add`.\n \n---only-trailers::\n+`--only-trailers`::\n \tOutput only the trailers, not any other parts of the input.\n \n---only-input::\n+`--only-input`::\n \tOutput only trailers that exist in the input; do not add any\n \tfrom the command-line or by applying `trailer.*` configuration\n \tvariables.\n \n---unfold::\n+`--unfold`::\n \tIf a trailer has a value that runs over multiple lines (aka \"folded\"),\n \treformat the value into a single line.\n \n---parse::\n+`--parse`::\n \tA convenience alias for `--only-trailers --only-input\n \t--unfold`. This makes it easier to only see the trailers coming from the\n \tinput without influencing them with any command line options or\n \tconfiguration variables, while also making the output machine-friendly with\n-\t--unfold.\n+\t`--unfold`.\n \n---no-divider::\n+`--no-divider`::\n \tDo not treat `---` as the end of the commit message. Use this\n \twhen you know your input contains just the commit message itself\n-\t(and not an email or the output of `git format-patch`).\n+\t(and not an email or the output of linkgit:git-format-patch[1]).\n \n CONFIGURATION VARIABLES\n -----------------------\n@@ -193,7 +193,7 @@ include::config/trailer.adoc[]\n EXAMPLES\n --------\n \n-* Configure a 'sign' trailer with a 'Signed-off-by' key, and then\n+* Configure a `sign` trailer with a `Signed-off-by` key, and then\n   add two of these trailers to a commit message file:\n +\n ------------\n@@ -230,8 +230,8 @@ Signed-off-by: Bob <bob@example.com>\n Acked-by: Alice <alice@example.com>\n ------------\n \n-* Extract the last commit as a patch, and add a 'Cc' and a\n-  'Reviewed-by' trailer to it:\n+* Extract the last commit as a patch, and add a `Cc` and a\n+  `Reviewed-by` trailer to it:\n +\n ------------\n $ git format-patch -1\n@@ -239,9 +239,9 @@ $ git format-patch -1\n $ git interpret-trailers --trailer 'Cc: Alice <alice@example.com>' --trailer 'Reviewed-by: Bob <bob@example.com>' 0001-foo.patch >0001-bar.patch\n ------------\n \n-* Configure a 'sign' trailer with a command to automatically add a\n-  'Signed-off-by: ' with the author information only if there is no\n-  'Signed-off-by: ' already, and show how it works:\n+* Configure a `sign` trailer with a command to automatically add a\n+  \"Signed-off-by: \" with the author information only if there is no\n+  \"Signed-off-by: \" already, and show how it works:\n +\n ------------\n $ cat msg1.txt\n@@ -272,7 +272,7 @@ body text\n Signed-off-by: Alice <alice@example.com>\n ------------\n \n-* Configure a 'fix' trailer with a key that contains a '#' and no\n+* Configure a `fix` trailer with a key that contains a `#` and no\n   space after this character, and show how it works:\n +\n ------------\n@@ -284,7 +284,7 @@ subject\n Fix #42\n ------------\n \n-* Configure a 'help' trailer with a cmd use a script `glog-find-author`\n+* Configure a `help` trailer with a cmd use a script `glog-find-author`\n   which search specified author identity from git log in git repository\n   and show how it works:\n +\n@@ -308,7 +308,7 @@ Helped-by: Junio C Hamano <gitster@pobox.com>\n Helped-by: Christian Couder <christian.couder@gmail.com>\n ------------\n \n-* Configure a 'ref' trailer with a cmd use a script `glog-grep`\n+* Configure a `ref` trailer with a cmd use a script `glog-grep`\n   to grep last relevant commit from git log in the git repository\n   and show how it works:\n +\n@@ -331,7 +331,7 @@ body text\n Reference-to: 8bc9a0c769 (Add copyright notices., 2005-04-07)\n ------------\n \n-* Configure a 'see' trailer with a command to show the subject of a\n+* Configure a `see` trailer with a command to show the subject of a\n   commit that is related, and show how it works:\n +\n ------------\n@@ -359,8 +359,8 @@ See-also: fe3187489d69c4 (subject of related commit)\n * Configure a commit template with some trailers with empty values\n   (using sed to show and keep the trailing spaces at the end of the\n   trailers), then configure a commit-msg hook that uses\n-  'git interpret-trailers' to remove trailers with empty values and\n-  to add a 'git-version' trailer:\n+  linkgit:git-interpret-trailers[1] to remove trailers with empty values and\n+  to add a `git-version` trailer:\n +\n ------------\n $ cat temp.txt\n-- \n2.53.0.32.gf6228eaf9cc\n\n"},{"id":"538695","messageId":"doc_interpret-tr_options.48c@msgid.xyz","threadId":"65217","inReplyTo":"CV_doc_interpret-tr_synopsis.48a@msgid.xyz","subject":"[PATCH 2/3] doc: interpret-trailers: normalize and fill out options","fromName":"","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2026-03-11T22:31:05Z","receivedAt":"2026-03-11T22:31:59Z","isPatch":true,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"From: Kristoffer Haugsbakk <code@khaugsbakk.name>\n\nSome negated options are missing according to\n`git interpret-trailers -h`.\n\nAlso normalize to the “stuck form” (see gitcli(7)) like what was done\nin 806337c7 (doc: notes: use stuck form throughout, 2025-05-27).[1]\n\nAlso normalize the order of the regular and negated options according to\nthe current convention.[2]\n\nAlso note that `--no-trailer` will reset the list.\n\n† 1: See also https://lore.kernel.org/git/6f7d027e-088a-4d66-92af-b8d1c32d730c@app.fastmail.com/\n† 2: https://lore.kernel.org/git/xmqqcyct1mtq.fsf@gitster.g/\n\nSigned-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>\n---\n Documentation/git-interpret-trailers.adoc | 66 +++++++++++++++--------\n 1 file changed, 43 insertions(+), 23 deletions(-)\n\ndiff --git a/Documentation/git-interpret-trailers.adoc b/Documentation/git-interpret-trailers.adoc\nindex 8a6c1bff472..e5da0462fad 100644\n--- a/Documentation/git-interpret-trailers.adoc\n+++ b/Documentation/git-interpret-trailers.adoc\n@@ -112,64 +112,80 @@ rules for RFC 822 headers. For example they do not follow the encoding rule.\n OPTIONS\n -------\n `--in-place`::\n-\tEdit the files in place.\n+`--no-in-place`::\n+\tEdit the files in place. The default is `--no-in-place`.\n \n `--trim-empty`::\n+`--no-trim-empty`::\n \tIf the _<value>_ part of any trailer contains only whitespace,\n \tthe whole trailer will be removed from the output.\n \tThis applies to existing trailers as well as new trailers.\n++\n+The default is `--no-trim-empty`.\n \n-`--trailer <key>[(=|:)<value>]`::\n+`--trailer=<key>[(=|:)<value>]`::\n+`--no-trailer`::\n \tSpecify a (_<key>_, _<value>_) pair that should be applied as a\n-\ttrailer to the inputs. See the description of this\n-\tcommand.\n+\ttrailer to the inputs. See the description of this command. Can\n+\tbe given multiple times.\n++\n+Use `--no-trailer` to reset the list.\n \n-`--where <placement>`::\n+`--where=<placement>`::\n `--no-where`::\n \tSpecify where all new trailers will be added.  A setting\n \tprovided with `--where` overrides the `trailer.where` and any\n \tapplicable `trailer.<keyAlias>.where` configuration variables\n \tand applies to all `--trailer` options until the next occurrence of\n-\t`--where` or `--no-where`. Upon encountering `--no-where`, clear the\n-\teffect of any previous use of `--where`, such that the relevant configuration\n-\tvariables are no longer overridden. Possible placements are `after`,\n+\t`--where` or `--no-where`. Possible placements are `after`,\n \t`before`, `end` or `start`.\n++\n+Use `--no-where` to clear the effect of any previous use of `--where`,\n+such that the relevant configuration variables are no longer overridden.\n \n-`--if-exists <action>`::\n+`--if-exists=<action>`::\n `--no-if-exists`::\n \tSpecify what action will be performed when there is already at\n \tleast one trailer with the same _<key>_ in the input.  A setting\n \tprovided with `--if-exists` overrides the `trailer.ifExists` and any\n \tapplicable `trailer.<keyAlias>.ifExists` configuration variables\n \tand applies to all `--trailer` options until the next occurrence of\n-\t`--if-exists` or `--no-if-exists`. Upon encountering `--no-if-exists`, clear the\n-\teffect of any previous use of `--if-exists`, such that the relevant configuration\n-\tvariables are no longer overridden. Possible actions are `addIfDifferent`,\n+\t`--if-exists` or `--no-if-exists`. Possible actions are `addIfDifferent`,\n \t`addIfDifferentNeighbor`, `add`, `replace` and `doNothing`.\n++\n+Use `--no-if-exists` to clear the effect of any previous use of\n+`--if-exists`, such that the relevant configuration variables are no\n+longer overridden.\n \n-`--if-missing <action>`::\n+`--if-missing=<action>`::\n `--no-if-missing`::\n \tSpecify what action will be performed when there is no other\n \ttrailer with the same _<key>_ in the input.  A setting\n \tprovided with `--if-missing` overrides the `trailer.ifMissing` and any\n \tapplicable `trailer.<keyAlias>.ifMissing` configuration variables\n \tand applies to all `--trailer` options until the next occurrence of\n-\t`--if-missing` or `--no-if-missing`. Upon encountering `--no-if-missing`,\n-\tclear the effect of any previous use of `--if-missing`, such that the relevant\n-\tconfiguration variables are no longer overridden. Possible actions are `doNothing`\n-\tor `add`.\n+\t`--if-missing` or `--no-if-missing`. Possible actions are\n+\t`doNothing` or `add`.\n++\n+Use `--no-if-missing` to clear the effect of any previous use of\n+`--if-missing`, such that the relevant configuration variables are no\n+longer overridden.\n \n `--only-trailers`::\n-\tOutput only the trailers, not any other parts of the input.\n+`--no-only-trailers`::\n+\tOutput only the trailers, not any other parts of the\n+\tinput. The default is `--no-only-trailers`.\n \n `--only-input`::\n+`--no-only-input`::\n \tOutput only trailers that exist in the input; do not add any\n \tfrom the command-line or by applying `trailer.*` configuration\n-\tvariables.\n+\tvariables. The default is `--no-only-input`.\n \n `--unfold`::\n+`--no-unfold`::\n \tIf a trailer has a value that runs over multiple lines (aka \"folded\"),\n-\treformat the value into a single line.\n+\treformat the value into a single line. The default is `--no-unfold`.\n \n `--parse`::\n \tA convenience alias for `--only-trailers --only-input\n@@ -177,11 +193,15 @@ OPTIONS\n \tinput without influencing them with any command line options or\n \tconfiguration variables, while also making the output machine-friendly with\n \t`--unfold`.\n++\n+There is no convenience alias to negate this alias.\n \n+`--divider`::\n `--no-divider`::\n-\tDo not treat `---` as the end of the commit message. Use this\n-\twhen you know your input contains just the commit message itself\n-\t(and not an email or the output of linkgit:git-format-patch[1]).\n+\tTreat `---` as the end of the commit message. This is the default.\n+\tUse `--no-divider` when you know your input contains just the\n+\tcommit message itself (and not an email or the output of\n+\tlinkgit:git-format-patch[1]).\n \n CONFIGURATION VARIABLES\n -----------------------\n-- \n2.53.0.32.gf6228eaf9cc\n\n"},{"id":"538696","messageId":"doc_interpret-tr_config.48d@msgid.xyz","threadId":"65217","inReplyTo":"CV_doc_interpret-tr_synopsis.48a@msgid.xyz","subject":"[PATCH 3/3] doc: config: convert trailers section to synopsis style","fromName":"","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2026-03-11T22:31:06Z","receivedAt":"2026-03-11T22:32:17Z","isPatch":true,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"From: Kristoffer Haugsbakk <code@khaugsbakk.name>\n\nConvert this part of the configuration documentation to synopsis style\nso that all of git-interpret-trailers(1) is consistent.\n\nSigned-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>\n---\n Documentation/config/trailer.adoc | 121 +++++++++++++++---------------\n 1 file changed, 61 insertions(+), 60 deletions(-)\n\ndiff --git a/Documentation/config/trailer.adoc b/Documentation/config/trailer.adoc\nindex 60bc221c88b..a382f68fe9e 100644\n--- a/Documentation/config/trailer.adoc\n+++ b/Documentation/config/trailer.adoc\n@@ -1,21 +1,21 @@\n-trailer.separators::\n+`trailer.separators`::\n \tThis option tells which characters are recognized as trailer\n-\tseparators. By default only ':' is recognized as a trailer\n-\tseparator, except that '=' is always accepted on the command\n+\tseparators. By default only `:` is recognized as a trailer\n+\tseparator, except that `=` is always accepted on the command\n \tline for compatibility with other git commands.\n +\n The first character given by this option will be the default character\n used when another separator is not specified in the config for this\n trailer.\n +\n-For example, if the value for this option is \"%=$\", then only lines\n-using the format '<key><sep><value>' with <sep> containing '%', '='\n-or '$' and then spaces will be considered trailers. And '%' will be\n+For example, if the value for this option is `%=$`, then only lines\n+using the format _<key><sep><value>_ with _<sep>_ containing `%`, `=`\n+or `$` and then spaces will be considered trailers. And `%` will be\n the default separator used, so by default trailers will appear like:\n-'<key>% <value>' (one percent sign and one space will appear between\n+`<key>% <value>` (one percent sign and one space will appear between\n the key and the value).\n \n-trailer.where::\n+`trailer.where`::\n \tThis option tells where a new trailer will be added.\n +\n This can be `end`, which is the default, `start`, `after` or `before`.\n@@ -27,41 +27,41 @@ If it is `start`, then each new trailer will appear at the start,\n instead of the end, of the existing trailers.\n +\n If it is `after`, then each new trailer will appear just after the\n-last trailer with the same <key>.\n+last trailer with the same _<key>_.\n +\n If it is `before`, then each new trailer will appear just before the\n-first trailer with the same <key>.\n+first trailer with the same _<key>_.\n \n-trailer.ifexists::\n+`trailer.ifexists`::\n \tThis option makes it possible to choose what action will be\n \tperformed when there is already at least one trailer with the\n-\tsame <key> in the input.\n+\tsame _<key>_ in the input.\n +\n The valid values for this option are: `addIfDifferentNeighbor` (this\n is the default), `addIfDifferent`, `add`, `replace` or `doNothing`.\n +\n With `addIfDifferentNeighbor`, a new trailer will be added only if no\n-trailer with the same (<key>, <value>) pair is above or below the line\n+trailer with the same (_<key>_, _<value>_) pair is above or below the line\n where the new trailer will be added.\n +\n With `addIfDifferent`, a new trailer will be added only if no trailer\n-with the same (<key>, <value>) pair is already in the input.\n+with the same (_<key>_, _<value>_) pair is already in the input.\n +\n With `add`, a new trailer will be added, even if some trailers with\n-the same (<key>, <value>) pair are already in the input.\n+the same (_<key>_, _<value>_) pair are already in the input.\n +\n-With `replace`, an existing trailer with the same <key> will be\n+With `replace`, an existing trailer with the same _<key>_ will be\n deleted and the new trailer will be added. The deleted trailer will be\n-the closest one (with the same <key>) to the place where the new one\n+the closest one (with the same _<key>_) to the place where the new one\n will be added.\n +\n With `doNothing`, nothing will be done; that is no new trailer will be\n-added if there is already one with the same <key> in the input.\n+added if there is already one with the same _<key>_ in the input.\n \n-trailer.ifmissing::\n+`trailer.ifmissing`::\n \tThis option makes it possible to choose what action will be\n \tperformed when there is not yet any trailer with the same\n-\t<key> in the input.\n+\t_<key>_ in the input.\n +\n The valid values for this option are: `add` (this is the default) and\n `doNothing`.\n@@ -70,67 +70,68 @@ With `add`, a new trailer will be added.\n +\n With `doNothing`, nothing will be done.\n \n-trailer.<keyAlias>.key::\n-\tDefines a <keyAlias> for the <key>. The <keyAlias> must be a\n-\tprefix (case does not matter) of the <key>. For example, in `git\n-\tconfig trailer.ack.key \"Acked-by\"` the \"Acked-by\" is the <key> and\n-\tthe \"ack\" is the <keyAlias>. This configuration allows the shorter\n+`trailer.<keyAlias>.key`::\n+\tDefines a _<keyAlias>_ for the _<key>_. The _<keyAlias>_ must be a\n+\tprefix (case does not matter) of the _<key>_. For example, in `git\n+\tconfig trailer.ack.key \"Acked-by\"` the `Acked-by` is the _<key>_ and\n+\tthe `ack` is the _<keyAlias>_. This configuration allows the shorter\n \t`--trailer \"ack:...\"` invocation on the command line using the \"ack\"\n-\t<keyAlias> instead of the longer `--trailer \"Acked-by:...\"`.\n+\t`<keyAlias>` instead of the longer `--trailer \"Acked-by:...\"`.\n +\n-At the end of the <key>, a separator can appear and then some\n-space characters. By default the only valid separator is ':',\n+At the end of the _<key>_, a separator can appear and then some\n+space characters. By default the only valid separator is `:`,\n but this can be changed using the `trailer.separators` config\n variable.\n +\n If there is a separator in the key, then it overrides the default\n separator when adding the trailer.\n \n-trailer.<keyAlias>.where::\n-\tThis option takes the same values as the 'trailer.where'\n+`trailer.<keyAlias>.where`::\n+\tThis option takes the same values as the `trailer.where`\n \tconfiguration variable and it overrides what is specified by\n-\tthat option for trailers with the specified <keyAlias>.\n+\tthat option for trailers with the specified _<keyAlias>_.\n \n-trailer.<keyAlias>.ifexists::\n-\tThis option takes the same values as the 'trailer.ifexists'\n+`trailer.<keyAlias>.ifexists`::\n+\tThis option takes the same values as the `trailer.ifexists`\n \tconfiguration variable and it overrides what is specified by\n-\tthat option for trailers with the specified <keyAlias>.\n+\tthat option for trailers with the specified _<keyAlias>_.\n \n-trailer.<keyAlias>.ifmissing::\n-\tThis option takes the same values as the 'trailer.ifmissing'\n+`trailer.<keyAlias>.ifmissing`::\n+\tThis option takes the same values as the `trailer.ifmissing`\n \tconfiguration variable and it overrides what is specified by\n-\tthat option for trailers with the specified <keyAlias>.\n+\tthat option for trailers with the specified _<keyAlias>_.\n \n-trailer.<keyAlias>.command::\n-\tDeprecated in favor of 'trailer.<keyAlias>.cmd'.\n-\tThis option behaves in the same way as 'trailer.<keyAlias>.cmd', except\n+`trailer.<keyAlias>.command`::\n+\tDeprecated in favor of `trailer.<keyAlias>.cmd`.\n+\tThis option behaves in the same way as `trailer.<keyAlias>.cmd`, except\n \tthat it doesn't pass anything as argument to the specified command.\n-\tInstead the first occurrence of substring $ARG is replaced by the\n-\t<value> that would be passed as argument.\n+\tInstead the first occurrence of substring `$ARG` is replaced by the\n+\t_<value>_ that would be passed as argument.\n +\n-Note that $ARG in the user's command is\n-only replaced once and that the original way of replacing $ARG is not safe.\n+Note that `$ARG` in the user's command is\n+only replaced once and that the original way of replacing `$ARG` is not safe.\n +\n-When both 'trailer.<keyAlias>.cmd' and 'trailer.<keyAlias>.command' are given\n-for the same <keyAlias>, 'trailer.<keyAlias>.cmd' is used and\n-'trailer.<keyAlias>.command' is ignored.\n+When both `trailer.<keyAlias>.cmd` and `trailer.<keyAlias>.command` are given\n+for the same _<keyAlias>_, `trailer.<keyAlias>.cmd` is used and\n+`trailer.<keyAlias>.command` is ignored.\n \n-trailer.<keyAlias>.cmd::\n+`trailer.<keyAlias>.cmd`::\n \tThis option can be used to specify a shell command that will be called\n-\tonce to automatically add a trailer with the specified <keyAlias>, and then\n-\tcalled each time a '--trailer <keyAlias>=<value>' argument is specified to\n-\tmodify the <value> of the trailer that this option would produce.\n+\tonce to automatically add a trailer with the specified _<keyAlias>_, and then\n+\tcalled each time a `--trailer <keyAlias>=<value>` argument is specified to\n+\tmodify the _<value>_ of the trailer that this option would produce.\n +\n When the specified command is first called to add a trailer\n-with the specified <keyAlias>, the behavior is as if a special\n-'--trailer <keyAlias>=<value>' argument was added at the beginning\n-of the \"git interpret-trailers\" command, where <value>\n-is taken to be the standard output of the command with any\n-leading and trailing whitespace trimmed off.\n+with the specified _<keyAlias>_, the behavior is as if a special\n+`--trailer <keyAlias>=<value>` argument was added at the beginning\n+of linkgit:git-interpret-trailers[1], where _<value>_ is taken to be the\n+standard output of the command with any leading and trailing whitespace\n+trimmed off.\n +\n-If some '--trailer <keyAlias>=<value>' arguments are also passed\n+If some `--trailer <keyAlias>=<value>` arguments are also passed\n on the command line, the command is called again once for each\n-of these arguments with the same <keyAlias>. And the <value> part\n+of these arguments with the same _<keyAlias>_. And the _<value>_ part\n of these arguments, if any, will be passed to the command as its\n-first argument. This way the command can produce a <value> computed\n-from the <value> passed in the '--trailer <keyAlias>=<value>' argument.\n+first argument. This way the command can produce a _<value>_ computed\n+from the _<value>_ passed in the `--trailer <keyAlias>=<value>`\n+argument.\n-- \n2.53.0.32.gf6228eaf9cc\n\n"},{"id":"538705","messageId":"xmqqy0jxkgy8.fsf@gitster.g","threadId":"65217","inReplyTo":"CV_doc_interpret-tr_synopsis.48a@msgid.xyz","subject":"Re: [PATCH 0/3] doc: interpret-trailers: convert to synopsis and update options","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2026-03-12T00:51:59Z","receivedAt":"2026-03-12T00:52:02Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"kristofferhaugsbakk@fastmail.com writes:\n\n> From: Kristoffer Haugsbakk <code@khaugsbakk.name>\n>\n> Topic name: doc-interpret-trailers-1\n>\n> Topic summary: Convert to synopsis style and update options.\n>\n> [3/1] doc: interpret-trailers: convert to synopsis style\n> [3/2] doc: interpret-trailers: normalize and fill out options\n> [3/3] doc: config: convert trailers section to synopsis style\n\nSomebody swapped %(count) and %(total)?\n\n\n>  Documentation/config/trailer.adoc         | 121 +++++++--------\n>  Documentation/git-interpret-trailers.adoc | 170 ++++++++++++----------\n>  2 files changed, 156 insertions(+), 135 deletions(-)\n>\n>\n> base-commit: 67ad42147a7acc2af6074753ebd03d904476118f\n"},{"id":"538706","messageId":"8c57d87f-9694-4b50-955c-a446bdefeb51@app.fastmail.com","threadId":"65217","inReplyTo":"xmqqy0jxkgy8.fsf@gitster.g","subject":"Re: [PATCH 0/3] doc: interpret-trailers: convert to synopsis and update options","fromName":"Kristoffer Haugsbakk","fromEmail":"code@khaugsbakk.name","sentAt":"2026-03-12T00:53:27Z","receivedAt":"2026-03-12T00:53:48Z","isPatch":true,"sender":{"key":"code@khaugsbakk.name","avatar":"https://avatars.githubusercontent.com/u/2229597?v=4"},"body":"On Thu, Mar 12, 2026, at 01:51, Junio C Hamano wrote:\n> kristofferhaugsbakk@fastmail.com writes:\n>\n>> From: Kristoffer Haugsbakk <code@khaugsbakk.name>\n>>\n>> Topic name: doc-interpret-trailers-1\n>>\n>> Topic summary: Convert to synopsis style and update options.\n>>\n>> [3/1] doc: interpret-trailers: convert to synopsis style\n>> [3/2] doc: interpret-trailers: normalize and fill out options\n>> [3/3] doc: config: convert trailers section to synopsis style\n>\n> Somebody swapped %(count) and %(total)?\n\nSomebody.\n\n>\n>\n>>  Documentation/config/trailer.adoc         | 121 +++++++--------\n>>  Documentation/git-interpret-trailers.adoc | 170 ++++++++++++----------\n>>  2 files changed, 156 insertions(+), 135 deletions(-)\n>>\n>>\n>> base-commit: 67ad42147a7acc2af6074753ebd03d904476118f\n"},{"id":"538708","messageId":"xmqq8qbxkes4.fsf@gitster.g","threadId":"65217","inReplyTo":"doc_interpret-tr_synopsis.48b@msgid.xyz","subject":"Re: [PATCH 1/3] doc: interpret-trailers: convert to synopsis style","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2026-03-12T01:38:51Z","receivedAt":"2026-03-12T01:38:55Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"kristofferhaugsbakk@fastmail.com writes:\n\n> ...s. The only thing is that `\": \"` is\n> used instead of `': '` ...\n\nThe description says that a pair of dqs inside `verbatim` replaces a\npair of sqs inside `verbatim` in the original.\n\nDoes this refer to this change?\n\n> -This means that the trimmed <key> and <value> will be separated by\n> -`': '` (one colon followed by one space).\n> +This means that the trimmed _<key>_ and _<value>_ will be separated by\n> +\": \" (one colon followed by one space).\n\nWe seem to have lost the `backticks` around the thing.  Intended?\nDoes the thing still typeset as verbatim in the manpages?\n\nThanks.\n"},{"id":"538780","messageId":"1953989.tdWV9SEqCh@piment-oiseau","threadId":"65217","inReplyTo":"doc_interpret-tr_synopsis.48b@msgid.xyz","subject":"Re: [PATCH 1/3] doc: interpret-trailers: convert to synopsis style","fromName":"Jean-Noël AVILA","fromEmail":"jn.avila@free.fr","sentAt":"2026-03-12T17:34:24Z","receivedAt":"2026-03-12T17:34:34Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"On Wednesday, 11 March 2026 23:31:04 CET kristofferhaugsbakk@fastmail.com \nwrote:\n> From: Kristoffer Haugsbakk <code@khaugsbakk.name>\n> \n> See e.g. 0ae23ab5 (doc: convert git worktree to synopsis style,\n> 2025-10-05) for the markup rules for this style.\n> \n> There aren’t many subtleties to the transformation of this doc since it\n> doesn’t use any advanced constructs. The only thing is that `\": \"` is\n> used instead of `': '` to refer to effective inline-verbatim with\n> a space (␠). I also use (_) for emphasis although (') gives the\n> same result.\n> \n> Also prefer linking to Git commands instead of saying\n> e.g. `git format-patch`.\n> \n> Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>\n> ---\n>  Documentation/git-interpret-trailers.adoc | 126 +++++++++++-----------\n>  1 file changed, 63 insertions(+), 63 deletions(-)\n> \n> diff --git a/Documentation/git-interpret-trailers.adoc\n> b/Documentation/git-interpret-trailers.adoc index fd335fe772a..8a6c1bff472 \n100644\n> --- a/Documentation/git-interpret-trailers.adoc\n> +++ b/Documentation/git-interpret-trailers.adoc\n> @@ -7,14 +7,14 @@ git-interpret-trailers - Add or parse structured \ninformation in\n> commit messages\n> \n>  SYNOPSIS\n>  --------\n> -[verse]\n> -'git interpret-trailers' [--in-place] [--trim-empty]\n> +[synopsis]\n> +git interpret-trailers [--in-place] [--trim-empty]\n>  \t\t\t[(--trailer (<key>|<key-alias>)\n[(=|:)<value>])...]\n>  \t\t\t[--parse] [<file>...]\n> \n>  DESCRIPTION\n>  -----------\n> -Add or parse 'trailer' lines that look similar to RFC 822 e-mail\n> +Add or parse _trailer_ lines that look similar to RFC 822 e-mail\n>  headers, at the end of the otherwise free-form part of a commit\n>  message. For example, in the following commit message\n> \n> @@ -27,10 +27,10 @@ Signed-off-by: Alice <alice@example.com>\n>  Signed-off-by: Bob <bob@example.com>\n>  ------------------------------------------------\n> \n> -the last two lines starting with \"Signed-off-by\" are trailers.\n> +the last two lines starting with `Signed-off-by` are trailers.\n> \n>  This command reads commit messages from either the\n> -<file> arguments or the standard input if no <file> is specified.\n> +_<file>_ arguments or the standard input if no _<file>_ is specified.\n>  If `--parse` is specified, the output consists of the parsed trailers\n>  coming from the input, without influencing them with any command line\n>  options or configuration variables.\n> @@ -43,7 +43,7 @@ to each input file. The result is emitted on the standard \noutput.\n> \n>  This command can also operate on the output of linkgit:git-format-patch[1],\n>  which is more elaborate than a plain commit message. Namely, such output\n> -includes a commit message (as above), a \"---\" divider line, and a patch \npart.\n> +includes a commit message (as above), a `---` divider line, and a patch \npart.\n>  For these inputs, the divider and patch parts are not modified by\n>  this command and are emitted as is on the output, unless\n>  `--no-divider` is specified.\n> @@ -53,24 +53,24 @@ are applied to each input and the way any existing \ntrailer in\n>  the input is changed. They also make it possible to\n>  automatically add some trailers.\n> \n> -By default, a '<key>=<value>' or '<key>:<value>' argument given\n> +By default, a `<key>=<value>` or `<key>:<value>` argument given\n>  using `--trailer` will be appended after the existing trailers only if\n> -the last trailer has a different (<key>, <value>) pair (or if there\n> -is no existing trailer). The <key> and <value> parts will be trimmed\n> +the last trailer has a different (_<key>_, _<value>_) pair (or if there\n> +is no existing trailer). The _<key>_ and _<value>_ parts will be trimmed\n>  to remove starting and trailing whitespace, and the resulting trimmed\n> -<key> and <value> will appear in the output like this:\n> +_<key>_ and _<value>_ will appear in the output like this:\n> \n>  ------------------------------------------------\n>  key: value\n>  ------------------------------------------------\n> \n> -This means that the trimmed <key> and <value> will be separated by\n> -`': '` (one colon followed by one space).\n> +This means that the trimmed _<key>_ and _<value>_ will be separated by\n> +\": \" (one colon followed by one space).\n> \n> -For convenience, a <key-alias> can be configured to make using `--trailer`\n> +For convenience, a _<key-alias>_ can be configured to make using `--\ntrailer`\n>  shorter to type on the command line. This can be configured using the\n> -'trailer.<key-alias>.key' configuration variable. The <keyAlias> must be a \nprefix\n> -of the full <key> string, although case sensitivity does not matter. For\n> +`trailer.<key-alias>.key` configuration variable. The _<keyAlias>_ must be \n\n\nHere, I guess that _<keyAlias>_ is in fact _<key-alias>_ . We do not use \ncamelCase for placeholders.\n\n> a\n> prefix +of the full _<key>_ string, although case sensitivity does not \nmatter. For\n> example, if you have\n> \n>  ------------------------------------------------\n> @@ -91,13 +91,13 @@ least one Git-generated or user-configured trailer and \nconsists\n> of at least 25% trailers.\n>  The group must be preceded by one or more empty (or whitespace-only) lines.\n>  The group must either be at the end of the input or be the last\n> -non-whitespace lines before a line that starts with '---' (followed by a\n> +non-whitespace lines before a line that starts with `---` (followed by a\n>  space or the end of the line).\n> \n>  When reading trailers, there can be no whitespace before or inside the\n> -<key>, but any number of regular space and tab characters are allowed\n> -between the <key> and the separator. There can be whitespaces before,\n> -inside or after the <value>. The <value> may be split over multiple lines\n> +_<key>_, but any number of regular space and tab characters are allowed\n> +between the _<key>_ and the separator. There can be whitespaces before,\n> +inside or after the _<value>_. The _<value>_ may be split over multiple \nlines\n>  with each subsequent line starting with at least one whitespace, like\n>  the \"folding\" in RFC 822. Example:\n> \n> @@ -111,77 +111,77 @@ rules for RFC 822 headers. For example they do not \nfollow the\n> encoding rule.\n> \n>  OPTIONS\n>  -------\n> ---in-place::\n> +`--in-place`::\n>  \tEdit the files in place.\n> \n> ---trim-empty::\n> -\tIf the <value> part of any trailer contains only whitespace,\n> +`--trim-empty`::\n> +\tIf the _<value>_ part of any trailer contains only whitespace,\n>  \tthe whole trailer will be removed from the output.\n>  \tThis applies to existing trailers as well as new trailers.\n> \n> ---trailer <key>[(=|:)<value>]::\n> -\tSpecify a (<key>, <value>) pair that should be applied as a\n> +`--trailer <key>[(=|:)<value>]`::\n> +\tSpecify a (_<key>_, _<value>_) pair that should be applied as a\n>  \ttrailer to the inputs. See the description of this\n>  \tcommand.\n> \n> ---where <placement>::\n> ---no-where::\n> +`--where <placement>`::\n> +`--no-where`::\n>  \tSpecify where all new trailers will be added.  A setting\n> -\tprovided with '--where' overrides the `trailer.where` and any\n> +\tprovided with `--where` overrides the `trailer.where` and any\n>  \tapplicable `trailer.<keyAlias>.where` configuration variables\n\nHere also, it's <key-alias> instead of <keyAlias> .\n\n> -\tand applies to all '--trailer' options until the next occurrence of\n> -\t'--where' or '--no-where'. Upon encountering '--no-where', clear the\n> -\teffect of any previous use of '--where', such that the relevant \nconfiguration\n> +\tand applies to all `--trailer` options until the next occurrence of\n> +\t`--where` or `--no-where`. Upon encountering `--no-where`, clear the\n> +\teffect of any previous use of `--where`, such that the relevant \nconfiguration\n>  \tvariables are no longer overridden. Possible placements are `after`,\n>  \t`before`, `end` or `start`.\n> \n> ---if-exists <action>::\n> ---no-if-exists::\n> +`--if-exists <action>`::\n> +`--no-if-exists`::\n>  \tSpecify what action will be performed when there is already at\n> -\tleast one trailer with the same <key> in the input.  A setting\n> -\tprovided with '--if-exists' overrides the `trailer.ifExists` and any\n> +\tleast one trailer with the same _<key>_ in the input.  A setting\n> +\tprovided with `--if-exists` overrides the `trailer.ifExists` and any\n>  \tapplicable `trailer.<keyAlias>.ifExists` configuration variables\n\nIdem\n\n> -\tand applies to all '--trailer' options until the next occurrence of\n> -\t'--if-exists' or '--no-if-exists'. Upon encountering '--no-if-\nexists', clear the\n> -\teffect of any previous use of '--if-exists', such that the relevant \nconfiguration\n> +\tand applies to all `--trailer` options until the next occurrence of\n> +\t`--if-exists` or `--no-if-exists`. Upon encountering `--no-if-\nexists`, clear the\n> +\teffect of any previous use of `--if-exists`, such that the relevant \nconfiguration\n> variables are no longer overridden. Possible actions are `addIfDifferent`,\n> `addIfDifferentNeighbor`, `add`, `replace` and `doNothing`.\n> \n> ---if-missing <action>::\n> ---no-if-missing::\n> +`--if-missing <action>`::\n> +`--no-if-missing`::\n>  \tSpecify what action will be performed when there is no other\n> -\ttrailer with the same <key> in the input.  A setting\n> -\tprovided with '--if-missing' overrides the `trailer.ifMissing` and \nany\n> +\ttrailer with the same _<key>_ in the input.  A setting\n> +\tprovided with `--if-missing` overrides the `trailer.ifMissing` and \nany\n>  \tapplicable `trailer.<keyAlias>.ifMissing` configuration variables\n\nIdem\n\n> -\tand applies to all '--trailer' options until the next occurrence of\n> -\t'--if-missing' or '--no-if-missing'. Upon encountering '--no-if-\nmissing',\n> -\tclear the effect of any previous use of '--if-missing', such that \nthe relevant\n> +\tand applies to all `--trailer` options until the next occurrence of\n> +\t`--if-missing` or `--no-if-missing`. Upon encountering `--no-if-\nmissing`,\n> +\tclear the effect of any previous use of `--if-missing`, such that \nthe relevant\n>  \tconfiguration variables are no longer overridden. Possible actions \nare\n> `doNothing` or `add`.\n> \n> ---only-trailers::\n> +`--only-trailers`::\n>  \tOutput only the trailers, not any other parts of the input.\n> \n> ---only-input::\n> +`--only-input`::\n>  \tOutput only trailers that exist in the input; do not add any\n>  \tfrom the command-line or by applying `trailer.*` configuration\n\nThe star here stands for a placeholder. Let's name it and use synopsis style:\n\n`trailer.<key-alias>`\n\n>  \tvariables.\n> \n> ---unfold::\n> +`--unfold`::\n>  \tIf a trailer has a value that runs over multiple lines (aka \n\"folded\"),\n>  \treformat the value into a single line.\n> \n> ---parse::\n> +`--parse`::\n>  \tA convenience alias for `--only-trailers --only-input\n>  \t--unfold`. This makes it easier to only see the trailers coming from \nthe\n>  \tinput without influencing them with any command line options or\n>  \tconfiguration variables, while also making the output machine-\nfriendly with\n> -\t--unfold.\n> +\t`--unfold`.\n> \n> ---no-divider::\n> +`--no-divider`::\n>  \tDo not treat `---` as the end of the commit message. Use this\n>  \twhen you know your input contains just the commit message itself\n> -\t(and not an email or the output of `git format-patch`).\n> +\t(and not an email or the output of linkgit:git-format-patch[1]).\n> \n>  CONFIGURATION VARIABLES\n>  -----------------------\n> @@ -193,7 +193,7 @@ include::config/trailer.adoc[]\n>  EXAMPLES\n>  --------\n> \n> -* Configure a 'sign' trailer with a 'Signed-off-by' key, and then\n> +* Configure a `sign` trailer with a `Signed-off-by` key, and then\n>    add two of these trailers to a commit message file:\n>  +\n>  ------------\n> @@ -230,8 +230,8 @@ Signed-off-by: Bob <bob@example.com>\n>  Acked-by: Alice <alice@example.com>\n>  ------------\n> \n> -* Extract the last commit as a patch, and add a 'Cc' and a\n> -  'Reviewed-by' trailer to it:\n> +* Extract the last commit as a patch, and add a `Cc` and a\n> +  `Reviewed-by` trailer to it:\n>  +\n>  ------------\n>  $ git format-patch -1\n> @@ -239,9 +239,9 @@ $ git format-patch -1\n>  $ git interpret-trailers --trailer 'Cc: Alice <alice@example.com>' --\ntrailer\n> 'Reviewed-by: Bob <bob@example.com>' 0001-foo.patch >0001-bar.patch \n------------\n> \n> -* Configure a 'sign' trailer with a command to automatically add a\n> -  'Signed-off-by: ' with the author information only if there is no\n> -  'Signed-off-by: ' already, and show how it works:\n> +* Configure a `sign` trailer with a command to automatically add a\n> +  \"Signed-off-by: \" with the author information only if there is no\n> +  \"Signed-off-by: \" already, and show how it works:\n>  +\n>  ------------\n>  $ cat msg1.txt\n> @@ -272,7 +272,7 @@ body text\n>  Signed-off-by: Alice <alice@example.com>\n>  ------------\n> \n> -* Configure a 'fix' trailer with a key that contains a '#' and no\n> +* Configure a `fix` trailer with a key that contains a `#` and no\n>    space after this character, and show how it works:\n>  +\n>  ------------\n> @@ -284,7 +284,7 @@ subject\n>  Fix #42\n>  ------------\n> \n> -* Configure a 'help' trailer with a cmd use a script `glog-find-author`\n> +* Configure a `help` trailer with a cmd use a script `glog-find-author`\n>    which search specified author identity from git log in git repository\n>    and show how it works:\n>  +\n> @@ -308,7 +308,7 @@ Helped-by: Junio C Hamano <gitster@pobox.com>\n>  Helped-by: Christian Couder <christian.couder@gmail.com>\n>  ------------\n> \n> -* Configure a 'ref' trailer with a cmd use a script `glog-grep`\n> +* Configure a `ref` trailer with a cmd use a script `glog-grep`\n>    to grep last relevant commit from git log in the git repository\n>    and show how it works:\n>  +\n> @@ -331,7 +331,7 @@ body text\n>  Reference-to: 8bc9a0c769 (Add copyright notices., 2005-04-07)\n>  ------------\n> \n> -* Configure a 'see' trailer with a command to show the subject of a\n> +* Configure a `see` trailer with a command to show the subject of a\n>    commit that is related, and show how it works:\n>  +\n>  ------------\n> @@ -359,8 +359,8 @@ See-also: fe3187489d69c4 (subject of related commit)\n>  * Configure a commit template with some trailers with empty values\n>    (using sed to show and keep the trailing spaces at the end of the\n>    trailers), then configure a commit-msg hook that uses\n> -  'git interpret-trailers' to remove trailers with empty values and\n> -  to add a 'git-version' trailer:\n> +  linkgit:git-interpret-trailers[1] to remove trailers with empty values\n\nWe are already in the manual page of git-interpret-trailer. It is useless to \nprovide a link to the current manpage.\n\n> and\n> +  to add a `git-version` trailer:\n>  +\n>  ------------\n>  $ cat temp.txt\n\t\nThanks.\n\n\n\n"},{"id":"538783","messageId":"3411126.44csPzL39Z@piment-oiseau","threadId":"65217","inReplyTo":"doc_interpret-tr_config.48d@msgid.xyz","subject":"Re: [PATCH 3/3] doc: config: convert trailers section to synopsis style","fromName":"Jean-Noël AVILA","fromEmail":"jn.avila@free.fr","sentAt":"2026-03-12T17:48:49Z","receivedAt":"2026-03-12T17:48:53Z","isPatch":true,"sender":{"key":"jn.avila@free.fr","avatar":"https://avatars.githubusercontent.com/u/156172?v=4"},"body":"Hello,\n\nExcept the replacement of <keyAlias> by <key-alias>, this is all good.\n\nThanks\n\n\n\n\n"},{"id":"538786","messageId":"xmqq1phogbk5.fsf@gitster.g","threadId":"65217","inReplyTo":"3411126.44csPzL39Z@piment-oiseau","subject":"Re: [PATCH 3/3] doc: config: convert trailers section to synopsis style","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2026-03-12T18:14:18Z","receivedAt":"2026-03-12T18:14:20Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jean-Noël AVILA <jn.avila@free.fr> writes:\n\n> Hello,\n>\n> Except the replacement of <keyAlias> by <key-alias>, this is all good.\n>\n> Thanks\n\nThanks for a review (and of courese, thanks for working on it,\nKristoffer).\n\nWill mark the topic as \"expecting a hopefully small and final\nreroll\".\n"},{"id":"538793","messageId":"faa89e88-42b0-4d52-993a-e4bf2937d711@app.fastmail.com","threadId":"65217","inReplyTo":"1953989.tdWV9SEqCh@piment-oiseau","subject":"Re: [PATCH 1/3] doc: interpret-trailers: convert to synopsis style","fromName":"Kristoffer Haugsbakk","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2026-03-12T19:11:29Z","receivedAt":"2026-03-12T19:11:52Z","isPatch":true,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"Thank you for the review.\n\nOn Thu, Mar 12, 2026, at 18:34, Jean-Noël AVILA wrote:\n>>[snip]\n>> @@ -359,8 +359,8 @@ See-also: fe3187489d69c4 (subject of related commit)\n>>  * Configure a commit template with some trailers with empty values\n>>    (using sed to show and keep the trailing spaces at the end of the\n>>    trailers), then configure a commit-msg hook that uses\n>> -  'git interpret-trailers' to remove trailers with empty values and\n>> -  to add a 'git-version' trailer:\n>> +  linkgit:git-interpret-trailers[1] to remove trailers with empty values\n>\n> We are already in the manual page of git-interpret-trailer. It is useless to\n> provide a link to the current manpage.\n>\n\nWhat should be written here? The existing `git interpret-trailers` or\ngit-interpret-trailers(1)?\n\n>> and\n>> +  to add a `git-version` trailer:\n>>  +\n>>  ------------\n>>  $ cat temp.txt\n\nI’ll incorporate all of these in the next round.\n"},{"id":"538913","messageId":"aa0664a5-09fe-4dee-b243-b3b5dff41b68@app.fastmail.com","threadId":"65217","inReplyTo":"xmqq8qbxkes4.fsf@gitster.g","subject":"Re: [PATCH 1/3] doc: interpret-trailers: convert to synopsis style","fromName":"Kristoffer Haugsbakk","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2026-03-13T16:43:38Z","receivedAt":"2026-03-13T16:44:11Z","isPatch":true,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"On Thu, Mar 12, 2026, at 02:38, Junio C Hamano wrote:\n> kristofferhaugsbakk@fastmail.com writes:\n>\n>> ...s. The only thing is that `\": \"` is\n>> used instead of `': '` ...\n>\n> The description says that a pair of dqs inside `verbatim` replaces a\n> pair of sqs inside `verbatim` in the original.\n>\n> Does this refer to this change?\n>\n>> -This means that the trimmed <key> and <value> will be separated by\n>> -`': '` (one colon followed by one space).\n>> +This means that the trimmed _<key>_ and _<value>_ will be separated by\n>> +\": \" (one colon followed by one space).\n>\n> We seem to have lost the `backticks` around the thing.  Intended?\n\nYes it is intended. It seems to be the current approach to “verbatim”\n(in spirit) that ends in a space is to use \"<verbatim> \".\n\nI had this arrow from `Documentation/pretty-formats.adoc` in the back of\nmy mind when editing this part:[1]\n\n    `pointer=<value>`;; Shown between HEAD and the branch it points to, if any.\n                  Defaults to \"{nbsp}->{nbsp}\".\n\nSo (finally looking back at this) maybe I need to use the no-break space\nexpression here.\n\n† 1: This part was recently changed although this `{nbsp}->{nbsp}` part\n     did not change: a34d1d53 (doc: convert git-show to synopsis style,\n     2026-02-06)\n\n> Does the thing still typeset as verbatim in the manpages?\n\nNo. It’s just regular text.\n\nFor that matter: my setup (perhaps flawed[2]) also renders ': ' in the\npreimage as regular text in the HTML output.\n\n🔗 2: https://lore.kernel.org/git/9570525.CDJkKcVGEf@piment-oiseau/\n"},{"id":"539165","messageId":"V2_CV_doc_interpret-tr_synopsis.50a@msgid.xyz","threadId":"65217","inReplyTo":"CV_doc_interpret-tr_synopsis.48a@msgid.xyz","subject":"[PATCH v2 0/4] doc: interpret-trailers: convert to synopsis and update options","fromName":"","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2026-03-16T21:48:23Z","receivedAt":"2026-03-16T21:49:01Z","isPatch":true,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"From: Kristoffer Haugsbakk <code@khaugsbakk.name>\n\nTopic name (applied): doc-interpret-trailers-1\n\nTopic summary: Convert to synopsis style and update options.\n\n§ Changes in v2\n\nApply changes from reviews by Jean-Noël and Junio. See the notes on the\npatches for details.\n\nThe last patch is new. To use `trailer.<key-alias>` instead of `trailer.*`\nin the source code (translation strings), in line with the docs.\n\n[1/4] doc: interpret-trailers: convert to synopsis style\n[2/4] doc: interpret-trailers: normalize and fill out options\n[3/4] doc: config: convert trailers section to synopsis style\n[4/4] interpret-trailers: use placeholder instead of *\n\n Documentation/config/trailer.adoc         | 121 +++++++-------\n Documentation/git-interpret-trailers.adoc | 193 ++++++++++++----------\n builtin/interpret-trailers.c              |   2 +-\n 3 files changed, 169 insertions(+), 147 deletions(-)\n\nInterdiff against v1:\ndiff --git a/Documentation/config/trailer.adoc b/Documentation/config/trailer.adoc\nindex a382f68fe9e..1bc70192d3a 100644\n--- a/Documentation/config/trailer.adoc\n+++ b/Documentation/config/trailer.adoc\n@@ -70,13 +70,13 @@ With `add`, a new trailer will be added.\n +\n With `doNothing`, nothing will be done.\n \n-`trailer.<keyAlias>.key`::\n-\tDefines a _<keyAlias>_ for the _<key>_. The _<keyAlias>_ must be a\n+`trailer.<key-alias>.key`::\n+\tDefines a _<key-alias>_ for the _<key>_. The _<key-alias>_ must be a\n \tprefix (case does not matter) of the _<key>_. For example, in `git\n \tconfig trailer.ack.key \"Acked-by\"` the `Acked-by` is the _<key>_ and\n-\tthe `ack` is the _<keyAlias>_. This configuration allows the shorter\n+\tthe `ack` is the _<key-alias>_. This configuration allows the shorter\n \t`--trailer \"ack:...\"` invocation on the command line using the \"ack\"\n-\t`<keyAlias>` instead of the longer `--trailer \"Acked-by:...\"`.\n+\t`<key-alias>` instead of the longer `--trailer \"Acked-by:...\"`.\n +\n At the end of the _<key>_, a separator can appear and then some\n space characters. By default the only valid separator is `:`,\n@@ -86,24 +86,24 @@ variable.\n If there is a separator in the key, then it overrides the default\n separator when adding the trailer.\n \n-`trailer.<keyAlias>.where`::\n+`trailer.<key-alias>.where`::\n \tThis option takes the same values as the `trailer.where`\n \tconfiguration variable and it overrides what is specified by\n-\tthat option for trailers with the specified _<keyAlias>_.\n+\tthat option for trailers with the specified _<key-alias>_.\n \n-`trailer.<keyAlias>.ifexists`::\n+`trailer.<key-alias>.ifexists`::\n \tThis option takes the same values as the `trailer.ifexists`\n \tconfiguration variable and it overrides what is specified by\n-\tthat option for trailers with the specified _<keyAlias>_.\n+\tthat option for trailers with the specified _<key-alias>_.\n \n-`trailer.<keyAlias>.ifmissing`::\n+`trailer.<key-alias>.ifmissing`::\n \tThis option takes the same values as the `trailer.ifmissing`\n \tconfiguration variable and it overrides what is specified by\n-\tthat option for trailers with the specified _<keyAlias>_.\n+\tthat option for trailers with the specified _<key-alias>_.\n \n-`trailer.<keyAlias>.command`::\n-\tDeprecated in favor of `trailer.<keyAlias>.cmd`.\n-\tThis option behaves in the same way as `trailer.<keyAlias>.cmd`, except\n+`trailer.<key-alias>.command`::\n+\tDeprecated in favor of `trailer.<key-alias>.cmd`.\n+\tThis option behaves in the same way as `trailer.<key-alias>.cmd`, except\n \tthat it doesn't pass anything as argument to the specified command.\n \tInstead the first occurrence of substring `$ARG` is replaced by the\n \t_<value>_ that would be passed as argument.\n@@ -111,27 +111,27 @@ separator when adding the trailer.\n Note that `$ARG` in the user's command is\n only replaced once and that the original way of replacing `$ARG` is not safe.\n +\n-When both `trailer.<keyAlias>.cmd` and `trailer.<keyAlias>.command` are given\n-for the same _<keyAlias>_, `trailer.<keyAlias>.cmd` is used and\n-`trailer.<keyAlias>.command` is ignored.\n+When both `trailer.<key-alias>.cmd` and `trailer.<key-alias>.command` are given\n+for the same _<key-alias>_, `trailer.<key-alias>.cmd` is used and\n+`trailer.<key-alias>.command` is ignored.\n \n-`trailer.<keyAlias>.cmd`::\n+`trailer.<key-alias>.cmd`::\n \tThis option can be used to specify a shell command that will be called\n-\tonce to automatically add a trailer with the specified _<keyAlias>_, and then\n-\tcalled each time a `--trailer <keyAlias>=<value>` argument is specified to\n+\tonce to automatically add a trailer with the specified _<key-alias>_, and then\n+\tcalled each time a `--trailer <key-alias>=<value>` argument is specified to\n \tmodify the _<value>_ of the trailer that this option would produce.\n +\n When the specified command is first called to add a trailer\n-with the specified _<keyAlias>_, the behavior is as if a special\n-`--trailer <keyAlias>=<value>` argument was added at the beginning\n+with the specified _<key-alias>_, the behavior is as if a special\n+`--trailer <key-alias>=<value>` argument was added at the beginning\n of linkgit:git-interpret-trailers[1], where _<value>_ is taken to be the\n standard output of the command with any leading and trailing whitespace\n trimmed off.\n +\n-If some `--trailer <keyAlias>=<value>` arguments are also passed\n+If some `--trailer <key-alias>=<value>` arguments are also passed\n on the command line, the command is called again once for each\n-of these arguments with the same _<keyAlias>_. And the _<value>_ part\n+of these arguments with the same _<key-alias>_. And the _<value>_ part\n of these arguments, if any, will be passed to the command as its\n first argument. This way the command can produce a _<value>_ computed\n-from the _<value>_ passed in the `--trailer <keyAlias>=<value>`\n+from the _<value>_ passed in the `--trailer <key-alias>=<value>`\n argument.\ndiff --git a/Documentation/git-interpret-trailers.adoc b/Documentation/git-interpret-trailers.adoc\nindex e5da0462fad..77b4f63b05c 100644\n--- a/Documentation/git-interpret-trailers.adoc\n+++ b/Documentation/git-interpret-trailers.adoc\n@@ -35,11 +35,12 @@ If `--parse` is specified, the output consists of the parsed trailers\n coming from the input, without influencing them with any command line\n options or configuration variables.\n \n-Otherwise, this command applies `trailer.*` configuration variables\n-(which could potentially add new trailers, as well as reposition them),\n-as well as any command line arguments that can override configuration\n-variables (such as `--trailer=...` which could also add new trailers),\n-to each input file. The result is emitted on the standard output.\n+Otherwise, this command applies `trailer.<key-alias>` configuration\n+variables (which could potentially add new trailers, as well as\n+reposition them), as well as any command line arguments that can\n+override configuration variables (such as `--trailer=...` which could\n+also add new trailers), to each input file. The result is emitted on the\n+standard output.\n \n This command can also operate on the output of linkgit:git-format-patch[1],\n which is more elaborate than a plain commit message. Namely, such output\n@@ -65,11 +66,11 @@ key: value\n ------------------------------------------------\n \n This means that the trimmed _<key>_ and _<value>_ will be separated by\n-\": \" (one colon followed by one space).\n+\"`:`{nbsp}\" (one colon followed by one space).\n \n For convenience, a _<key-alias>_ can be configured to make using `--trailer`\n shorter to type on the command line. This can be configured using the\n-`trailer.<key-alias>.key` configuration variable. The _<keyAlias>_ must be a prefix\n+`trailer.<key-alias>.key` configuration variable. The _<key-alias>_ must be a prefix\n of the full _<key>_ string, although case sensitivity does not matter. For\n example, if you have\n \n@@ -135,7 +136,7 @@ Use `--no-trailer` to reset the list.\n `--no-where`::\n \tSpecify where all new trailers will be added.  A setting\n \tprovided with `--where` overrides the `trailer.where` and any\n-\tapplicable `trailer.<keyAlias>.where` configuration variables\n+\tapplicable `trailer.<key-alias>.where` configuration variables\n \tand applies to all `--trailer` options until the next occurrence of\n \t`--where` or `--no-where`. Possible placements are `after`,\n \t`before`, `end` or `start`.\n@@ -148,7 +149,7 @@ such that the relevant configuration variables are no longer overridden.\n \tSpecify what action will be performed when there is already at\n \tleast one trailer with the same _<key>_ in the input.  A setting\n \tprovided with `--if-exists` overrides the `trailer.ifExists` and any\n-\tapplicable `trailer.<keyAlias>.ifExists` configuration variables\n+\tapplicable `trailer.<key-alias>.ifExists` configuration variables\n \tand applies to all `--trailer` options until the next occurrence of\n \t`--if-exists` or `--no-if-exists`. Possible actions are `addIfDifferent`,\n \t`addIfDifferentNeighbor`, `add`, `replace` and `doNothing`.\n@@ -162,7 +163,7 @@ longer overridden.\n \tSpecify what action will be performed when there is no other\n \ttrailer with the same _<key>_ in the input.  A setting\n \tprovided with `--if-missing` overrides the `trailer.ifMissing` and any\n-\tapplicable `trailer.<keyAlias>.ifMissing` configuration variables\n+\tapplicable `trailer.<key-alias>.ifMissing` configuration variables\n \tand applies to all `--trailer` options until the next occurrence of\n \t`--if-missing` or `--no-if-missing`. Possible actions are\n \t`doNothing` or `add`.\n@@ -179,7 +180,7 @@ longer overridden.\n `--only-input`::\n `--no-only-input`::\n \tOutput only trailers that exist in the input; do not add any\n-\tfrom the command-line or by applying `trailer.*` configuration\n+\tfrom the command-line or by applying `trailer.<key-alias>` configuration\n \tvariables. The default is `--no-only-input`.\n \n `--unfold`::\n@@ -260,8 +261,8 @@ $ git interpret-trailers --trailer 'Cc: Alice <alice@example.com>' --trailer 'Re\n ------------\n \n * Configure a `sign` trailer with a command to automatically add a\n-  \"Signed-off-by: \" with the author information only if there is no\n-  \"Signed-off-by: \" already, and show how it works:\n+  \"`Signed-off-by:`{nbsp}\" with the author information only if there is no\n+  \"`Signed-off-by:`{nbsp}\" already, and show how it works:\n +\n ------------\n $ cat msg1.txt\n@@ -379,8 +380,8 @@ See-also: fe3187489d69c4 (subject of related commit)\n * Configure a commit template with some trailers with empty values\n   (using sed to show and keep the trailing spaces at the end of the\n   trailers), then configure a commit-msg hook that uses\n-  linkgit:git-interpret-trailers[1] to remove trailers with empty values and\n-  to add a `git-version` trailer:\n+  git-interpret-trailers(1) to remove trailers with empty values and to\n+  add a `git-version` trailer:\n +\n ------------\n $ cat temp.txt\ndiff --git a/builtin/interpret-trailers.c b/builtin/interpret-trailers.c\nindex 41b0750e5af..4b617c3ecb0 100644\n--- a/builtin/interpret-trailers.c\n+++ b/builtin/interpret-trailers.c\n@@ -211,7 +211,7 @@ int cmd_interpret_trailers(int argc,\n \t\t\t     N_(\"action if trailer is missing\"), option_parse_if_missing),\n \n \t\tOPT_BOOL(0, \"only-trailers\", &opts.only_trailers, N_(\"output only the trailers\")),\n-\t\tOPT_BOOL(0, \"only-input\", &opts.only_input, N_(\"do not apply trailer.* configuration variables\")),\n+\t\tOPT_BOOL(0, \"only-input\", &opts.only_input, N_(\"do not apply trailer.<key-alias> configuration variables\")),\n \t\tOPT_BOOL(0, \"unfold\", &opts.unfold, N_(\"reformat multiline trailer values as single-line values\")),\n \t\tOPT_CALLBACK_F(0, \"parse\", &opts, NULL, N_(\"alias for --only-trailers --only-input --unfold\"),\n \t\t\tPARSE_OPT_NOARG | PARSE_OPT_NONEG, parse_opt_parse),\nRange-diff against v1:\n1:  87ec90d0adb ! 1:  f9a4622feaf doc: interpret-trailers: convert to synopsis style\n    @@ Commit message\n         2025-10-05) for the markup rules for this style.\n     \n         There aren’t many subtleties to the transformation of this doc since it\n    -    doesn’t use any advanced constructs. The only thing is that `\": \"` is\n    +    doesn’t use any advanced constructs. The only thing is that \"`:`{nbsp}\" is\n         used instead of `': '` to refer to effective inline-verbatim with\n    -    a space (␠). I also use (_) for emphasis although (') gives the\n    +    a space (␠).[1] I also use (_) for emphasis although (') gives the\n         same result.\n     \n    -    Also prefer linking to Git commands instead of saying\n    -    e.g. `git format-patch`.\n    +    Also prefer linking to Git commands instead of saying e.g. `git\n    +    format-patch`. But for this command we can type out git-interpret-\n    +    trailers(1) to avoid a self-reference.\n    +\n    +    Also replace camel case `<keyAlias>` with kebab case `<key-alias>`.\n    +    And while doing that make sure to replace `trailer.*` with\n    +    `trailer.<key-alias>`.\n    +\n    +    † 1: Similar to \"`tag:`{nbsp}\" in `Documentation/pretty-formats.adoc`\n     \n         Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>\n     \n    @@ Documentation/git-interpret-trailers.adoc: Signed-off-by: Alice <alice@example.c\n      If `--parse` is specified, the output consists of the parsed trailers\n      coming from the input, without influencing them with any command line\n      options or configuration variables.\n    -@@ Documentation/git-interpret-trailers.adoc: to each input file. The result is emitted on the standard output.\n    + \n    +-Otherwise, this command applies `trailer.*` configuration variables\n    +-(which could potentially add new trailers, as well as reposition them),\n    +-as well as any command line arguments that can override configuration\n    +-variables (such as `--trailer=...` which could also add new trailers),\n    +-to each input file. The result is emitted on the standard output.\n    ++Otherwise, this command applies `trailer.<key-alias>` configuration\n    ++variables (which could potentially add new trailers, as well as\n    ++reposition them), as well as any command line arguments that can\n    ++override configuration variables (such as `--trailer=...` which could\n    ++also add new trailers), to each input file. The result is emitted on the\n    ++standard output.\n      \n      This command can also operate on the output of linkgit:git-format-patch[1],\n      which is more elaborate than a plain commit message. Namely, such output\n    @@ Documentation/git-interpret-trailers.adoc: are applied to each input and the way\n     -This means that the trimmed <key> and <value> will be separated by\n     -`': '` (one colon followed by one space).\n     +This means that the trimmed _<key>_ and _<value>_ will be separated by\n    -+\": \" (one colon followed by one space).\n    ++\"`:`{nbsp}\" (one colon followed by one space).\n      \n     -For convenience, a <key-alias> can be configured to make using `--trailer`\n     +For convenience, a _<key-alias>_ can be configured to make using `--trailer`\n      shorter to type on the command line. This can be configured using the\n     -'trailer.<key-alias>.key' configuration variable. The <keyAlias> must be a prefix\n     -of the full <key> string, although case sensitivity does not matter. For\n    -+`trailer.<key-alias>.key` configuration variable. The _<keyAlias>_ must be a prefix\n    ++`trailer.<key-alias>.key` configuration variable. The _<key-alias>_ must be a prefix\n     +of the full _<key>_ string, although case sensitivity does not matter. For\n      example, if you have\n      \n    @@ Documentation/git-interpret-trailers.adoc: rules for RFC 822 headers. For exampl\n     +`--no-where`::\n      \tSpecify where all new trailers will be added.  A setting\n     -\tprovided with '--where' overrides the `trailer.where` and any\n    -+\tprovided with `--where` overrides the `trailer.where` and any\n    - \tapplicable `trailer.<keyAlias>.where` configuration variables\n    +-\tapplicable `trailer.<keyAlias>.where` configuration variables\n     -\tand applies to all '--trailer' options until the next occurrence of\n     -\t'--where' or '--no-where'. Upon encountering '--no-where', clear the\n     -\teffect of any previous use of '--where', such that the relevant configuration\n    ++\tprovided with `--where` overrides the `trailer.where` and any\n    ++\tapplicable `trailer.<key-alias>.where` configuration variables\n     +\tand applies to all `--trailer` options until the next occurrence of\n     +\t`--where` or `--no-where`. Upon encountering `--no-where`, clear the\n     +\teffect of any previous use of `--where`, such that the relevant configuration\n    @@ Documentation/git-interpret-trailers.adoc: rules for RFC 822 headers. For exampl\n      \tSpecify what action will be performed when there is already at\n     -\tleast one trailer with the same <key> in the input.  A setting\n     -\tprovided with '--if-exists' overrides the `trailer.ifExists` and any\n    -+\tleast one trailer with the same _<key>_ in the input.  A setting\n    -+\tprovided with `--if-exists` overrides the `trailer.ifExists` and any\n    - \tapplicable `trailer.<keyAlias>.ifExists` configuration variables\n    +-\tapplicable `trailer.<keyAlias>.ifExists` configuration variables\n     -\tand applies to all '--trailer' options until the next occurrence of\n     -\t'--if-exists' or '--no-if-exists'. Upon encountering '--no-if-exists', clear the\n     -\teffect of any previous use of '--if-exists', such that the relevant configuration\n    ++\tleast one trailer with the same _<key>_ in the input.  A setting\n    ++\tprovided with `--if-exists` overrides the `trailer.ifExists` and any\n    ++\tapplicable `trailer.<key-alias>.ifExists` configuration variables\n     +\tand applies to all `--trailer` options until the next occurrence of\n     +\t`--if-exists` or `--no-if-exists`. Upon encountering `--no-if-exists`, clear the\n     +\teffect of any previous use of `--if-exists`, such that the relevant configuration\n    @@ Documentation/git-interpret-trailers.adoc: rules for RFC 822 headers. For exampl\n      \tSpecify what action will be performed when there is no other\n     -\ttrailer with the same <key> in the input.  A setting\n     -\tprovided with '--if-missing' overrides the `trailer.ifMissing` and any\n    -+\ttrailer with the same _<key>_ in the input.  A setting\n    -+\tprovided with `--if-missing` overrides the `trailer.ifMissing` and any\n    - \tapplicable `trailer.<keyAlias>.ifMissing` configuration variables\n    +-\tapplicable `trailer.<keyAlias>.ifMissing` configuration variables\n     -\tand applies to all '--trailer' options until the next occurrence of\n     -\t'--if-missing' or '--no-if-missing'. Upon encountering '--no-if-missing',\n     -\tclear the effect of any previous use of '--if-missing', such that the relevant\n    ++\ttrailer with the same _<key>_ in the input.  A setting\n    ++\tprovided with `--if-missing` overrides the `trailer.ifMissing` and any\n    ++\tapplicable `trailer.<key-alias>.ifMissing` configuration variables\n     +\tand applies to all `--trailer` options until the next occurrence of\n     +\t`--if-missing` or `--no-if-missing`. Upon encountering `--no-if-missing`,\n     +\tclear the effect of any previous use of `--if-missing`, such that the relevant\n    @@ Documentation/git-interpret-trailers.adoc: rules for RFC 822 headers. For exampl\n     ---only-input::\n     +`--only-input`::\n      \tOutput only trailers that exist in the input; do not add any\n    - \tfrom the command-line or by applying `trailer.*` configuration\n    +-\tfrom the command-line or by applying `trailer.*` configuration\n    ++\tfrom the command-line or by applying `trailer.<key-alias>` configuration\n      \tvariables.\n      \n     ---unfold::\n    @@ Documentation/git-interpret-trailers.adoc: $ git format-patch -1\n     -  'Signed-off-by: ' with the author information only if there is no\n     -  'Signed-off-by: ' already, and show how it works:\n     +* Configure a `sign` trailer with a command to automatically add a\n    -+  \"Signed-off-by: \" with the author information only if there is no\n    -+  \"Signed-off-by: \" already, and show how it works:\n    ++  \"`Signed-off-by:`{nbsp}\" with the author information only if there is no\n    ++  \"`Signed-off-by:`{nbsp}\" already, and show how it works:\n      +\n      ------------\n      $ cat msg1.txt\n    @@ Documentation/git-interpret-trailers.adoc: See-also: fe3187489d69c4 (subject of\n        trailers), then configure a commit-msg hook that uses\n     -  'git interpret-trailers' to remove trailers with empty values and\n     -  to add a 'git-version' trailer:\n    -+  linkgit:git-interpret-trailers[1] to remove trailers with empty values and\n    -+  to add a `git-version` trailer:\n    ++  git-interpret-trailers(1) to remove trailers with empty values and to\n    ++  add a `git-version` trailer:\n      +\n      ------------\n      $ cat temp.txt\n2:  e24f8a3d37e ! 2:  e04853c499e doc: interpret-trailers: normalize and fill out options\n    @@ Documentation/git-interpret-trailers.adoc: rules for RFC 822 headers. For exampl\n      `--no-where`::\n      \tSpecify where all new trailers will be added.  A setting\n      \tprovided with `--where` overrides the `trailer.where` and any\n    - \tapplicable `trailer.<keyAlias>.where` configuration variables\n    + \tapplicable `trailer.<key-alias>.where` configuration variables\n      \tand applies to all `--trailer` options until the next occurrence of\n     -\t`--where` or `--no-where`. Upon encountering `--no-where`, clear the\n     -\teffect of any previous use of `--where`, such that the relevant configuration\n    @@ Documentation/git-interpret-trailers.adoc: rules for RFC 822 headers. For exampl\n      \tSpecify what action will be performed when there is already at\n      \tleast one trailer with the same _<key>_ in the input.  A setting\n      \tprovided with `--if-exists` overrides the `trailer.ifExists` and any\n    - \tapplicable `trailer.<keyAlias>.ifExists` configuration variables\n    + \tapplicable `trailer.<key-alias>.ifExists` configuration variables\n      \tand applies to all `--trailer` options until the next occurrence of\n     -\t`--if-exists` or `--no-if-exists`. Upon encountering `--no-if-exists`, clear the\n     -\teffect of any previous use of `--if-exists`, such that the relevant configuration\n    @@ Documentation/git-interpret-trailers.adoc: rules for RFC 822 headers. For exampl\n      \tSpecify what action will be performed when there is no other\n      \ttrailer with the same _<key>_ in the input.  A setting\n      \tprovided with `--if-missing` overrides the `trailer.ifMissing` and any\n    - \tapplicable `trailer.<keyAlias>.ifMissing` configuration variables\n    + \tapplicable `trailer.<key-alias>.ifMissing` configuration variables\n      \tand applies to all `--trailer` options until the next occurrence of\n     -\t`--if-missing` or `--no-if-missing`. Upon encountering `--no-if-missing`,\n     -\tclear the effect of any previous use of `--if-missing`, such that the relevant\n    @@ Documentation/git-interpret-trailers.adoc: rules for RFC 822 headers. For exampl\n      `--only-input`::\n     +`--no-only-input`::\n      \tOutput only trailers that exist in the input; do not add any\n    - \tfrom the command-line or by applying `trailer.*` configuration\n    + \tfrom the command-line or by applying `trailer.<key-alias>` configuration\n     -\tvariables.\n     +\tvariables. The default is `--no-only-input`.\n      \n3:  10f11ebb078 ! 3:  ed1eb37b935 doc: config: convert trailers section to synopsis style\n    @@ Commit message\n         Convert this part of the configuration documentation to synopsis style\n         so that all of git-interpret-trailers(1) is consistent.\n     \n    +    See the commit message from two commits ago.\n    +\n         Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>\n     \n      ## Documentation/config/trailer.adoc ##\n    @@ Documentation/config/trailer.adoc: With `add`, a new trailer will be added.\n     -\tprefix (case does not matter) of the <key>. For example, in `git\n     -\tconfig trailer.ack.key \"Acked-by\"` the \"Acked-by\" is the <key> and\n     -\tthe \"ack\" is the <keyAlias>. This configuration allows the shorter\n    -+`trailer.<keyAlias>.key`::\n    -+\tDefines a _<keyAlias>_ for the _<key>_. The _<keyAlias>_ must be a\n    ++`trailer.<key-alias>.key`::\n    ++\tDefines a _<key-alias>_ for the _<key>_. The _<key-alias>_ must be a\n     +\tprefix (case does not matter) of the _<key>_. For example, in `git\n     +\tconfig trailer.ack.key \"Acked-by\"` the `Acked-by` is the _<key>_ and\n    -+\tthe `ack` is the _<keyAlias>_. This configuration allows the shorter\n    ++\tthe `ack` is the _<key-alias>_. This configuration allows the shorter\n      \t`--trailer \"ack:...\"` invocation on the command line using the \"ack\"\n     -\t<keyAlias> instead of the longer `--trailer \"Acked-by:...\"`.\n    -+\t`<keyAlias>` instead of the longer `--trailer \"Acked-by:...\"`.\n    ++\t`<key-alias>` instead of the longer `--trailer \"Acked-by:...\"`.\n      +\n     -At the end of the <key>, a separator can appear and then some\n     -space characters. By default the only valid separator is ':',\n    @@ Documentation/config/trailer.adoc: With `add`, a new trailer will be added.\n      \n     -trailer.<keyAlias>.where::\n     -\tThis option takes the same values as the 'trailer.where'\n    -+`trailer.<keyAlias>.where`::\n    ++`trailer.<key-alias>.where`::\n     +\tThis option takes the same values as the `trailer.where`\n      \tconfiguration variable and it overrides what is specified by\n     -\tthat option for trailers with the specified <keyAlias>.\n    -+\tthat option for trailers with the specified _<keyAlias>_.\n    ++\tthat option for trailers with the specified _<key-alias>_.\n      \n     -trailer.<keyAlias>.ifexists::\n     -\tThis option takes the same values as the 'trailer.ifexists'\n    -+`trailer.<keyAlias>.ifexists`::\n    ++`trailer.<key-alias>.ifexists`::\n     +\tThis option takes the same values as the `trailer.ifexists`\n      \tconfiguration variable and it overrides what is specified by\n     -\tthat option for trailers with the specified <keyAlias>.\n    -+\tthat option for trailers with the specified _<keyAlias>_.\n    ++\tthat option for trailers with the specified _<key-alias>_.\n      \n     -trailer.<keyAlias>.ifmissing::\n     -\tThis option takes the same values as the 'trailer.ifmissing'\n    -+`trailer.<keyAlias>.ifmissing`::\n    ++`trailer.<key-alias>.ifmissing`::\n     +\tThis option takes the same values as the `trailer.ifmissing`\n      \tconfiguration variable and it overrides what is specified by\n     -\tthat option for trailers with the specified <keyAlias>.\n    -+\tthat option for trailers with the specified _<keyAlias>_.\n    ++\tthat option for trailers with the specified _<key-alias>_.\n      \n     -trailer.<keyAlias>.command::\n     -\tDeprecated in favor of 'trailer.<keyAlias>.cmd'.\n     -\tThis option behaves in the same way as 'trailer.<keyAlias>.cmd', except\n    -+`trailer.<keyAlias>.command`::\n    -+\tDeprecated in favor of `trailer.<keyAlias>.cmd`.\n    -+\tThis option behaves in the same way as `trailer.<keyAlias>.cmd`, except\n    ++`trailer.<key-alias>.command`::\n    ++\tDeprecated in favor of `trailer.<key-alias>.cmd`.\n    ++\tThis option behaves in the same way as `trailer.<key-alias>.cmd`, except\n      \tthat it doesn't pass anything as argument to the specified command.\n     -\tInstead the first occurrence of substring $ARG is replaced by the\n     -\t<value> that would be passed as argument.\n    @@ Documentation/config/trailer.adoc: With `add`, a new trailer will be added.\n     -When both 'trailer.<keyAlias>.cmd' and 'trailer.<keyAlias>.command' are given\n     -for the same <keyAlias>, 'trailer.<keyAlias>.cmd' is used and\n     -'trailer.<keyAlias>.command' is ignored.\n    -+When both `trailer.<keyAlias>.cmd` and `trailer.<keyAlias>.command` are given\n    -+for the same _<keyAlias>_, `trailer.<keyAlias>.cmd` is used and\n    -+`trailer.<keyAlias>.command` is ignored.\n    ++When both `trailer.<key-alias>.cmd` and `trailer.<key-alias>.command` are given\n    ++for the same _<key-alias>_, `trailer.<key-alias>.cmd` is used and\n    ++`trailer.<key-alias>.command` is ignored.\n      \n     -trailer.<keyAlias>.cmd::\n    -+`trailer.<keyAlias>.cmd`::\n    ++`trailer.<key-alias>.cmd`::\n      \tThis option can be used to specify a shell command that will be called\n     -\tonce to automatically add a trailer with the specified <keyAlias>, and then\n     -\tcalled each time a '--trailer <keyAlias>=<value>' argument is specified to\n     -\tmodify the <value> of the trailer that this option would produce.\n    -+\tonce to automatically add a trailer with the specified _<keyAlias>_, and then\n    -+\tcalled each time a `--trailer <keyAlias>=<value>` argument is specified to\n    ++\tonce to automatically add a trailer with the specified _<key-alias>_, and then\n    ++\tcalled each time a `--trailer <key-alias>=<value>` argument is specified to\n     +\tmodify the _<value>_ of the trailer that this option would produce.\n      +\n      When the specified command is first called to add a trailer\n    @@ Documentation/config/trailer.adoc: With `add`, a new trailer will be added.\n     -of the \"git interpret-trailers\" command, where <value>\n     -is taken to be the standard output of the command with any\n     -leading and trailing whitespace trimmed off.\n    -+with the specified _<keyAlias>_, the behavior is as if a special\n    -+`--trailer <keyAlias>=<value>` argument was added at the beginning\n    ++with the specified _<key-alias>_, the behavior is as if a special\n    ++`--trailer <key-alias>=<value>` argument was added at the beginning\n     +of linkgit:git-interpret-trailers[1], where _<value>_ is taken to be the\n     +standard output of the command with any leading and trailing whitespace\n     +trimmed off.\n      +\n     -If some '--trailer <keyAlias>=<value>' arguments are also passed\n    -+If some `--trailer <keyAlias>=<value>` arguments are also passed\n    ++If some `--trailer <key-alias>=<value>` arguments are also passed\n      on the command line, the command is called again once for each\n     -of these arguments with the same <keyAlias>. And the <value> part\n    -+of these arguments with the same _<keyAlias>_. And the _<value>_ part\n    ++of these arguments with the same _<key-alias>_. And the _<value>_ part\n      of these arguments, if any, will be passed to the command as its\n     -first argument. This way the command can produce a <value> computed\n     -from the <value> passed in the '--trailer <keyAlias>=<value>' argument.\n     +first argument. This way the command can produce a _<value>_ computed\n    -+from the _<value>_ passed in the `--trailer <keyAlias>=<value>`\n    ++from the _<value>_ passed in the `--trailer <key-alias>=<value>`\n     +argument.\n-:  ----------- > 4:  1feb6933662 interpret-trailers: use placeholder instead of *\n\nbase-commit: 67ad42147a7acc2af6074753ebd03d904476118f\n-- \n2.53.0.32.gf6228eaf9cc\n\n"},{"id":"539166","messageId":"V2_doc_interpret-tr_synopsis.50b@msgid.xyz","threadId":"65217","inReplyTo":"V2_CV_doc_interpret-tr_synopsis.50a@msgid.xyz","subject":"[PATCH v2 1/4] doc: interpret-trailers: convert to synopsis style","fromName":"","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2026-03-16T21:48:24Z","receivedAt":"2026-03-16T21:49:19Z","isPatch":true,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"From: Kristoffer Haugsbakk <code@khaugsbakk.name>\n\nSee e.g. 0ae23ab5 (doc: convert git worktree to synopsis style,\n2025-10-05) for the markup rules for this style.\n\nThere aren’t many subtleties to the transformation of this doc since it\ndoesn’t use any advanced constructs. The only thing is that \"`:`{nbsp}\" is\nused instead of `': '` to refer to effective inline-verbatim with\na space (␠).[1] I also use (_) for emphasis although (') gives the\nsame result.\n\nAlso prefer linking to Git commands instead of saying e.g. `git\nformat-patch`. But for this command we can type out git-interpret-\ntrailers(1) to avoid a self-reference.\n\nAlso replace camel case `<keyAlias>` with kebab case `<key-alias>`.\nAnd while doing that make sure to replace `trailer.*` with\n`trailer.<key-alias>`.\n\n† 1: Similar to \"`tag:`{nbsp}\" in `Documentation/pretty-formats.adoc`\n\nSigned-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>\n---\n\nNotes (series):\n    v2:\n    • <keyAlias> → <key-alias> (no camelcase)\n    • trailer.* → trailer.<key-alias>\n    • No linkgit for this command (it would link to itself); replace with plain\n      git-interpret-trailers(1)\n    • Use \"`:`{nbsp}\" for the verbatim-but-ends-in-space case\n    \n      This is inspired by Documentation/pretty-formats.adoc:\n    \n          `tag=<value>`: Shown before tag names. Defaults to \"`tag:`{nbsp}\".\n    \n      See: https://lore.kernel.org/git/aa0664a5-09fe-4dee-b243-b3b5dff41b68@app.fastmail.com/\n    • And also apply the NBSP treatment to two trailer mentions that originally\n      had a trailing space\n\n Documentation/git-interpret-trailers.adoc | 145 +++++++++++-----------\n 1 file changed, 73 insertions(+), 72 deletions(-)\n\ndiff --git a/Documentation/git-interpret-trailers.adoc b/Documentation/git-interpret-trailers.adoc\nindex fd335fe772a..ea47f2f7ae5 100644\n--- a/Documentation/git-interpret-trailers.adoc\n+++ b/Documentation/git-interpret-trailers.adoc\n@@ -7,14 +7,14 @@ git-interpret-trailers - Add or parse structured information in commit messages\n \n SYNOPSIS\n --------\n-[verse]\n-'git interpret-trailers' [--in-place] [--trim-empty]\n+[synopsis]\n+git interpret-trailers [--in-place] [--trim-empty]\n \t\t\t[(--trailer (<key>|<key-alias>)[(=|:)<value>])...]\n \t\t\t[--parse] [<file>...]\n \n DESCRIPTION\n -----------\n-Add or parse 'trailer' lines that look similar to RFC 822 e-mail\n+Add or parse _trailer_ lines that look similar to RFC 822 e-mail\n headers, at the end of the otherwise free-form part of a commit\n message. For example, in the following commit message\n \n@@ -27,23 +27,24 @@ Signed-off-by: Alice <alice@example.com>\n Signed-off-by: Bob <bob@example.com>\n ------------------------------------------------\n \n-the last two lines starting with \"Signed-off-by\" are trailers.\n+the last two lines starting with `Signed-off-by` are trailers.\n \n This command reads commit messages from either the\n-<file> arguments or the standard input if no <file> is specified.\n+_<file>_ arguments or the standard input if no _<file>_ is specified.\n If `--parse` is specified, the output consists of the parsed trailers\n coming from the input, without influencing them with any command line\n options or configuration variables.\n \n-Otherwise, this command applies `trailer.*` configuration variables\n-(which could potentially add new trailers, as well as reposition them),\n-as well as any command line arguments that can override configuration\n-variables (such as `--trailer=...` which could also add new trailers),\n-to each input file. The result is emitted on the standard output.\n+Otherwise, this command applies `trailer.<key-alias>` configuration\n+variables (which could potentially add new trailers, as well as\n+reposition them), as well as any command line arguments that can\n+override configuration variables (such as `--trailer=...` which could\n+also add new trailers), to each input file. The result is emitted on the\n+standard output.\n \n This command can also operate on the output of linkgit:git-format-patch[1],\n which is more elaborate than a plain commit message. Namely, such output\n-includes a commit message (as above), a \"---\" divider line, and a patch part.\n+includes a commit message (as above), a `---` divider line, and a patch part.\n For these inputs, the divider and patch parts are not modified by\n this command and are emitted as is on the output, unless\n `--no-divider` is specified.\n@@ -53,24 +54,24 @@ are applied to each input and the way any existing trailer in\n the input is changed. They also make it possible to\n automatically add some trailers.\n \n-By default, a '<key>=<value>' or '<key>:<value>' argument given\n+By default, a `<key>=<value>` or `<key>:<value>` argument given\n using `--trailer` will be appended after the existing trailers only if\n-the last trailer has a different (<key>, <value>) pair (or if there\n-is no existing trailer). The <key> and <value> parts will be trimmed\n+the last trailer has a different (_<key>_, _<value>_) pair (or if there\n+is no existing trailer). The _<key>_ and _<value>_ parts will be trimmed\n to remove starting and trailing whitespace, and the resulting trimmed\n-<key> and <value> will appear in the output like this:\n+_<key>_ and _<value>_ will appear in the output like this:\n \n ------------------------------------------------\n key: value\n ------------------------------------------------\n \n-This means that the trimmed <key> and <value> will be separated by\n-`': '` (one colon followed by one space).\n+This means that the trimmed _<key>_ and _<value>_ will be separated by\n+\"`:`{nbsp}\" (one colon followed by one space).\n \n-For convenience, a <key-alias> can be configured to make using `--trailer`\n+For convenience, a _<key-alias>_ can be configured to make using `--trailer`\n shorter to type on the command line. This can be configured using the\n-'trailer.<key-alias>.key' configuration variable. The <keyAlias> must be a prefix\n-of the full <key> string, although case sensitivity does not matter. For\n+`trailer.<key-alias>.key` configuration variable. The _<key-alias>_ must be a prefix\n+of the full _<key>_ string, although case sensitivity does not matter. For\n example, if you have\n \n ------------------------------------------------\n@@ -91,13 +92,13 @@ least one Git-generated or user-configured trailer and consists of at\n least 25% trailers.\n The group must be preceded by one or more empty (or whitespace-only) lines.\n The group must either be at the end of the input or be the last\n-non-whitespace lines before a line that starts with '---' (followed by a\n+non-whitespace lines before a line that starts with `---` (followed by a\n space or the end of the line).\n \n When reading trailers, there can be no whitespace before or inside the\n-<key>, but any number of regular space and tab characters are allowed\n-between the <key> and the separator. There can be whitespaces before,\n-inside or after the <value>. The <value> may be split over multiple lines\n+_<key>_, but any number of regular space and tab characters are allowed\n+between the _<key>_ and the separator. There can be whitespaces before,\n+inside or after the _<value>_. The _<value>_ may be split over multiple lines\n with each subsequent line starting with at least one whitespace, like\n the \"folding\" in RFC 822. Example:\n \n@@ -111,77 +112,77 @@ rules for RFC 822 headers. For example they do not follow the encoding rule.\n \n OPTIONS\n -------\n---in-place::\n+`--in-place`::\n \tEdit the files in place.\n \n---trim-empty::\n-\tIf the <value> part of any trailer contains only whitespace,\n+`--trim-empty`::\n+\tIf the _<value>_ part of any trailer contains only whitespace,\n \tthe whole trailer will be removed from the output.\n \tThis applies to existing trailers as well as new trailers.\n \n---trailer <key>[(=|:)<value>]::\n-\tSpecify a (<key>, <value>) pair that should be applied as a\n+`--trailer <key>[(=|:)<value>]`::\n+\tSpecify a (_<key>_, _<value>_) pair that should be applied as a\n \ttrailer to the inputs. See the description of this\n \tcommand.\n \n---where <placement>::\n---no-where::\n+`--where <placement>`::\n+`--no-where`::\n \tSpecify where all new trailers will be added.  A setting\n-\tprovided with '--where' overrides the `trailer.where` and any\n-\tapplicable `trailer.<keyAlias>.where` configuration variables\n-\tand applies to all '--trailer' options until the next occurrence of\n-\t'--where' or '--no-where'. Upon encountering '--no-where', clear the\n-\teffect of any previous use of '--where', such that the relevant configuration\n+\tprovided with `--where` overrides the `trailer.where` and any\n+\tapplicable `trailer.<key-alias>.where` configuration variables\n+\tand applies to all `--trailer` options until the next occurrence of\n+\t`--where` or `--no-where`. Upon encountering `--no-where`, clear the\n+\teffect of any previous use of `--where`, such that the relevant configuration\n \tvariables are no longer overridden. Possible placements are `after`,\n \t`before`, `end` or `start`.\n \n---if-exists <action>::\n---no-if-exists::\n+`--if-exists <action>`::\n+`--no-if-exists`::\n \tSpecify what action will be performed when there is already at\n-\tleast one trailer with the same <key> in the input.  A setting\n-\tprovided with '--if-exists' overrides the `trailer.ifExists` and any\n-\tapplicable `trailer.<keyAlias>.ifExists` configuration variables\n-\tand applies to all '--trailer' options until the next occurrence of\n-\t'--if-exists' or '--no-if-exists'. Upon encountering '--no-if-exists', clear the\n-\teffect of any previous use of '--if-exists', such that the relevant configuration\n+\tleast one trailer with the same _<key>_ in the input.  A setting\n+\tprovided with `--if-exists` overrides the `trailer.ifExists` and any\n+\tapplicable `trailer.<key-alias>.ifExists` configuration variables\n+\tand applies to all `--trailer` options until the next occurrence of\n+\t`--if-exists` or `--no-if-exists`. Upon encountering `--no-if-exists`, clear the\n+\teffect of any previous use of `--if-exists`, such that the relevant configuration\n \tvariables are no longer overridden. Possible actions are `addIfDifferent`,\n \t`addIfDifferentNeighbor`, `add`, `replace` and `doNothing`.\n \n---if-missing <action>::\n---no-if-missing::\n+`--if-missing <action>`::\n+`--no-if-missing`::\n \tSpecify what action will be performed when there is no other\n-\ttrailer with the same <key> in the input.  A setting\n-\tprovided with '--if-missing' overrides the `trailer.ifMissing` and any\n-\tapplicable `trailer.<keyAlias>.ifMissing` configuration variables\n-\tand applies to all '--trailer' options until the next occurrence of\n-\t'--if-missing' or '--no-if-missing'. Upon encountering '--no-if-missing',\n-\tclear the effect of any previous use of '--if-missing', such that the relevant\n+\ttrailer with the same _<key>_ in the input.  A setting\n+\tprovided with `--if-missing` overrides the `trailer.ifMissing` and any\n+\tapplicable `trailer.<key-alias>.ifMissing` configuration variables\n+\tand applies to all `--trailer` options until the next occurrence of\n+\t`--if-missing` or `--no-if-missing`. Upon encountering `--no-if-missing`,\n+\tclear the effect of any previous use of `--if-missing`, such that the relevant\n \tconfiguration variables are no longer overridden. Possible actions are `doNothing`\n \tor `add`.\n \n---only-trailers::\n+`--only-trailers`::\n \tOutput only the trailers, not any other parts of the input.\n \n---only-input::\n+`--only-input`::\n \tOutput only trailers that exist in the input; do not add any\n-\tfrom the command-line or by applying `trailer.*` configuration\n+\tfrom the command-line or by applying `trailer.<key-alias>` configuration\n \tvariables.\n \n---unfold::\n+`--unfold`::\n \tIf a trailer has a value that runs over multiple lines (aka \"folded\"),\n \treformat the value into a single line.\n \n---parse::\n+`--parse`::\n \tA convenience alias for `--only-trailers --only-input\n \t--unfold`. This makes it easier to only see the trailers coming from the\n \tinput without influencing them with any command line options or\n \tconfiguration variables, while also making the output machine-friendly with\n-\t--unfold.\n+\t`--unfold`.\n \n---no-divider::\n+`--no-divider`::\n \tDo not treat `---` as the end of the commit message. Use this\n \twhen you know your input contains just the commit message itself\n-\t(and not an email or the output of `git format-patch`).\n+\t(and not an email or the output of linkgit:git-format-patch[1]).\n \n CONFIGURATION VARIABLES\n -----------------------\n@@ -193,7 +194,7 @@ include::config/trailer.adoc[]\n EXAMPLES\n --------\n \n-* Configure a 'sign' trailer with a 'Signed-off-by' key, and then\n+* Configure a `sign` trailer with a `Signed-off-by` key, and then\n   add two of these trailers to a commit message file:\n +\n ------------\n@@ -230,8 +231,8 @@ Signed-off-by: Bob <bob@example.com>\n Acked-by: Alice <alice@example.com>\n ------------\n \n-* Extract the last commit as a patch, and add a 'Cc' and a\n-  'Reviewed-by' trailer to it:\n+* Extract the last commit as a patch, and add a `Cc` and a\n+  `Reviewed-by` trailer to it:\n +\n ------------\n $ git format-patch -1\n@@ -239,9 +240,9 @@ $ git format-patch -1\n $ git interpret-trailers --trailer 'Cc: Alice <alice@example.com>' --trailer 'Reviewed-by: Bob <bob@example.com>' 0001-foo.patch >0001-bar.patch\n ------------\n \n-* Configure a 'sign' trailer with a command to automatically add a\n-  'Signed-off-by: ' with the author information only if there is no\n-  'Signed-off-by: ' already, and show how it works:\n+* Configure a `sign` trailer with a command to automatically add a\n+  \"`Signed-off-by:`{nbsp}\" with the author information only if there is no\n+  \"`Signed-off-by:`{nbsp}\" already, and show how it works:\n +\n ------------\n $ cat msg1.txt\n@@ -272,7 +273,7 @@ body text\n Signed-off-by: Alice <alice@example.com>\n ------------\n \n-* Configure a 'fix' trailer with a key that contains a '#' and no\n+* Configure a `fix` trailer with a key that contains a `#` and no\n   space after this character, and show how it works:\n +\n ------------\n@@ -284,7 +285,7 @@ subject\n Fix #42\n ------------\n \n-* Configure a 'help' trailer with a cmd use a script `glog-find-author`\n+* Configure a `help` trailer with a cmd use a script `glog-find-author`\n   which search specified author identity from git log in git repository\n   and show how it works:\n +\n@@ -308,7 +309,7 @@ Helped-by: Junio C Hamano <gitster@pobox.com>\n Helped-by: Christian Couder <christian.couder@gmail.com>\n ------------\n \n-* Configure a 'ref' trailer with a cmd use a script `glog-grep`\n+* Configure a `ref` trailer with a cmd use a script `glog-grep`\n   to grep last relevant commit from git log in the git repository\n   and show how it works:\n +\n@@ -331,7 +332,7 @@ body text\n Reference-to: 8bc9a0c769 (Add copyright notices., 2005-04-07)\n ------------\n \n-* Configure a 'see' trailer with a command to show the subject of a\n+* Configure a `see` trailer with a command to show the subject of a\n   commit that is related, and show how it works:\n +\n ------------\n@@ -359,8 +360,8 @@ See-also: fe3187489d69c4 (subject of related commit)\n * Configure a commit template with some trailers with empty values\n   (using sed to show and keep the trailing spaces at the end of the\n   trailers), then configure a commit-msg hook that uses\n-  'git interpret-trailers' to remove trailers with empty values and\n-  to add a 'git-version' trailer:\n+  git-interpret-trailers(1) to remove trailers with empty values and to\n+  add a `git-version` trailer:\n +\n ------------\n $ cat temp.txt\n-- \n2.53.0.32.gf6228eaf9cc\n\n"},{"id":"539167","messageId":"V2_doc_interpret-tr_options.50c@msgid.xyz","threadId":"65217","inReplyTo":"V2_CV_doc_interpret-tr_synopsis.50a@msgid.xyz","subject":"[PATCH v2 2/4] doc: interpret-trailers: normalize and fill out options","fromName":"","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2026-03-16T21:48:25Z","receivedAt":"2026-03-16T21:49:38Z","isPatch":true,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"From: Kristoffer Haugsbakk <code@khaugsbakk.name>\n\nSome negated options are missing according to\n`git interpret-trailers -h`.\n\nAlso normalize to the “stuck form” (see gitcli(7)) like what was done\nin 806337c7 (doc: notes: use stuck form throughout, 2025-05-27).[1]\n\nAlso normalize the order of the regular and negated options according to\nthe current convention.[2]\n\nAlso note that `--no-trailer` will reset the list.\n\n† 1: See also https://lore.kernel.org/git/6f7d027e-088a-4d66-92af-b8d1c32d730c@app.fastmail.com/\n† 2: https://lore.kernel.org/git/xmqqcyct1mtq.fsf@gitster.g/\n\nSigned-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>\n---\n Documentation/git-interpret-trailers.adoc | 66 +++++++++++++++--------\n 1 file changed, 43 insertions(+), 23 deletions(-)\n\ndiff --git a/Documentation/git-interpret-trailers.adoc b/Documentation/git-interpret-trailers.adoc\nindex ea47f2f7ae5..77b4f63b05c 100644\n--- a/Documentation/git-interpret-trailers.adoc\n+++ b/Documentation/git-interpret-trailers.adoc\n@@ -113,64 +113,80 @@ rules for RFC 822 headers. For example they do not follow the encoding rule.\n OPTIONS\n -------\n `--in-place`::\n-\tEdit the files in place.\n+`--no-in-place`::\n+\tEdit the files in place. The default is `--no-in-place`.\n \n `--trim-empty`::\n+`--no-trim-empty`::\n \tIf the _<value>_ part of any trailer contains only whitespace,\n \tthe whole trailer will be removed from the output.\n \tThis applies to existing trailers as well as new trailers.\n++\n+The default is `--no-trim-empty`.\n \n-`--trailer <key>[(=|:)<value>]`::\n+`--trailer=<key>[(=|:)<value>]`::\n+`--no-trailer`::\n \tSpecify a (_<key>_, _<value>_) pair that should be applied as a\n-\ttrailer to the inputs. See the description of this\n-\tcommand.\n+\ttrailer to the inputs. See the description of this command. Can\n+\tbe given multiple times.\n++\n+Use `--no-trailer` to reset the list.\n \n-`--where <placement>`::\n+`--where=<placement>`::\n `--no-where`::\n \tSpecify where all new trailers will be added.  A setting\n \tprovided with `--where` overrides the `trailer.where` and any\n \tapplicable `trailer.<key-alias>.where` configuration variables\n \tand applies to all `--trailer` options until the next occurrence of\n-\t`--where` or `--no-where`. Upon encountering `--no-where`, clear the\n-\teffect of any previous use of `--where`, such that the relevant configuration\n-\tvariables are no longer overridden. Possible placements are `after`,\n+\t`--where` or `--no-where`. Possible placements are `after`,\n \t`before`, `end` or `start`.\n++\n+Use `--no-where` to clear the effect of any previous use of `--where`,\n+such that the relevant configuration variables are no longer overridden.\n \n-`--if-exists <action>`::\n+`--if-exists=<action>`::\n `--no-if-exists`::\n \tSpecify what action will be performed when there is already at\n \tleast one trailer with the same _<key>_ in the input.  A setting\n \tprovided with `--if-exists` overrides the `trailer.ifExists` and any\n \tapplicable `trailer.<key-alias>.ifExists` configuration variables\n \tand applies to all `--trailer` options until the next occurrence of\n-\t`--if-exists` or `--no-if-exists`. Upon encountering `--no-if-exists`, clear the\n-\teffect of any previous use of `--if-exists`, such that the relevant configuration\n-\tvariables are no longer overridden. Possible actions are `addIfDifferent`,\n+\t`--if-exists` or `--no-if-exists`. Possible actions are `addIfDifferent`,\n \t`addIfDifferentNeighbor`, `add`, `replace` and `doNothing`.\n++\n+Use `--no-if-exists` to clear the effect of any previous use of\n+`--if-exists`, such that the relevant configuration variables are no\n+longer overridden.\n \n-`--if-missing <action>`::\n+`--if-missing=<action>`::\n `--no-if-missing`::\n \tSpecify what action will be performed when there is no other\n \ttrailer with the same _<key>_ in the input.  A setting\n \tprovided with `--if-missing` overrides the `trailer.ifMissing` and any\n \tapplicable `trailer.<key-alias>.ifMissing` configuration variables\n \tand applies to all `--trailer` options until the next occurrence of\n-\t`--if-missing` or `--no-if-missing`. Upon encountering `--no-if-missing`,\n-\tclear the effect of any previous use of `--if-missing`, such that the relevant\n-\tconfiguration variables are no longer overridden. Possible actions are `doNothing`\n-\tor `add`.\n+\t`--if-missing` or `--no-if-missing`. Possible actions are\n+\t`doNothing` or `add`.\n++\n+Use `--no-if-missing` to clear the effect of any previous use of\n+`--if-missing`, such that the relevant configuration variables are no\n+longer overridden.\n \n `--only-trailers`::\n-\tOutput only the trailers, not any other parts of the input.\n+`--no-only-trailers`::\n+\tOutput only the trailers, not any other parts of the\n+\tinput. The default is `--no-only-trailers`.\n \n `--only-input`::\n+`--no-only-input`::\n \tOutput only trailers that exist in the input; do not add any\n \tfrom the command-line or by applying `trailer.<key-alias>` configuration\n-\tvariables.\n+\tvariables. The default is `--no-only-input`.\n \n `--unfold`::\n+`--no-unfold`::\n \tIf a trailer has a value that runs over multiple lines (aka \"folded\"),\n-\treformat the value into a single line.\n+\treformat the value into a single line. The default is `--no-unfold`.\n \n `--parse`::\n \tA convenience alias for `--only-trailers --only-input\n@@ -178,11 +194,15 @@ OPTIONS\n \tinput without influencing them with any command line options or\n \tconfiguration variables, while also making the output machine-friendly with\n \t`--unfold`.\n++\n+There is no convenience alias to negate this alias.\n \n+`--divider`::\n `--no-divider`::\n-\tDo not treat `---` as the end of the commit message. Use this\n-\twhen you know your input contains just the commit message itself\n-\t(and not an email or the output of linkgit:git-format-patch[1]).\n+\tTreat `---` as the end of the commit message. This is the default.\n+\tUse `--no-divider` when you know your input contains just the\n+\tcommit message itself (and not an email or the output of\n+\tlinkgit:git-format-patch[1]).\n \n CONFIGURATION VARIABLES\n -----------------------\n-- \n2.53.0.32.gf6228eaf9cc\n\n"},{"id":"539168","messageId":"V2_doc_interpret-tr_config.50d@msgid.xyz","threadId":"65217","inReplyTo":"V2_CV_doc_interpret-tr_synopsis.50a@msgid.xyz","subject":"[PATCH v2 3/4] doc: config: convert trailers section to synopsis style","fromName":"","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2026-03-16T21:48:26Z","receivedAt":"2026-03-16T21:49:56Z","isPatch":true,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"From: Kristoffer Haugsbakk <code@khaugsbakk.name>\n\nConvert this part of the configuration documentation to synopsis style\nso that all of git-interpret-trailers(1) is consistent.\n\nSee the commit message from two commits ago.\n\nSigned-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>\n---\n\nNotes (series):\n    v2:\n    • <keyAlias> → <key-alias> (no camelcase)\n    • Refer to two-commits-ago for an explanation of the changes\n\n Documentation/config/trailer.adoc | 121 +++++++++++++++---------------\n 1 file changed, 61 insertions(+), 60 deletions(-)\n\ndiff --git a/Documentation/config/trailer.adoc b/Documentation/config/trailer.adoc\nindex 60bc221c88b..1bc70192d3a 100644\n--- a/Documentation/config/trailer.adoc\n+++ b/Documentation/config/trailer.adoc\n@@ -1,21 +1,21 @@\n-trailer.separators::\n+`trailer.separators`::\n \tThis option tells which characters are recognized as trailer\n-\tseparators. By default only ':' is recognized as a trailer\n-\tseparator, except that '=' is always accepted on the command\n+\tseparators. By default only `:` is recognized as a trailer\n+\tseparator, except that `=` is always accepted on the command\n \tline for compatibility with other git commands.\n +\n The first character given by this option will be the default character\n used when another separator is not specified in the config for this\n trailer.\n +\n-For example, if the value for this option is \"%=$\", then only lines\n-using the format '<key><sep><value>' with <sep> containing '%', '='\n-or '$' and then spaces will be considered trailers. And '%' will be\n+For example, if the value for this option is `%=$`, then only lines\n+using the format _<key><sep><value>_ with _<sep>_ containing `%`, `=`\n+or `$` and then spaces will be considered trailers. And `%` will be\n the default separator used, so by default trailers will appear like:\n-'<key>% <value>' (one percent sign and one space will appear between\n+`<key>% <value>` (one percent sign and one space will appear between\n the key and the value).\n \n-trailer.where::\n+`trailer.where`::\n \tThis option tells where a new trailer will be added.\n +\n This can be `end`, which is the default, `start`, `after` or `before`.\n@@ -27,41 +27,41 @@ If it is `start`, then each new trailer will appear at the start,\n instead of the end, of the existing trailers.\n +\n If it is `after`, then each new trailer will appear just after the\n-last trailer with the same <key>.\n+last trailer with the same _<key>_.\n +\n If it is `before`, then each new trailer will appear just before the\n-first trailer with the same <key>.\n+first trailer with the same _<key>_.\n \n-trailer.ifexists::\n+`trailer.ifexists`::\n \tThis option makes it possible to choose what action will be\n \tperformed when there is already at least one trailer with the\n-\tsame <key> in the input.\n+\tsame _<key>_ in the input.\n +\n The valid values for this option are: `addIfDifferentNeighbor` (this\n is the default), `addIfDifferent`, `add`, `replace` or `doNothing`.\n +\n With `addIfDifferentNeighbor`, a new trailer will be added only if no\n-trailer with the same (<key>, <value>) pair is above or below the line\n+trailer with the same (_<key>_, _<value>_) pair is above or below the line\n where the new trailer will be added.\n +\n With `addIfDifferent`, a new trailer will be added only if no trailer\n-with the same (<key>, <value>) pair is already in the input.\n+with the same (_<key>_, _<value>_) pair is already in the input.\n +\n With `add`, a new trailer will be added, even if some trailers with\n-the same (<key>, <value>) pair are already in the input.\n+the same (_<key>_, _<value>_) pair are already in the input.\n +\n-With `replace`, an existing trailer with the same <key> will be\n+With `replace`, an existing trailer with the same _<key>_ will be\n deleted and the new trailer will be added. The deleted trailer will be\n-the closest one (with the same <key>) to the place where the new one\n+the closest one (with the same _<key>_) to the place where the new one\n will be added.\n +\n With `doNothing`, nothing will be done; that is no new trailer will be\n-added if there is already one with the same <key> in the input.\n+added if there is already one with the same _<key>_ in the input.\n \n-trailer.ifmissing::\n+`trailer.ifmissing`::\n \tThis option makes it possible to choose what action will be\n \tperformed when there is not yet any trailer with the same\n-\t<key> in the input.\n+\t_<key>_ in the input.\n +\n The valid values for this option are: `add` (this is the default) and\n `doNothing`.\n@@ -70,67 +70,68 @@ With `add`, a new trailer will be added.\n +\n With `doNothing`, nothing will be done.\n \n-trailer.<keyAlias>.key::\n-\tDefines a <keyAlias> for the <key>. The <keyAlias> must be a\n-\tprefix (case does not matter) of the <key>. For example, in `git\n-\tconfig trailer.ack.key \"Acked-by\"` the \"Acked-by\" is the <key> and\n-\tthe \"ack\" is the <keyAlias>. This configuration allows the shorter\n+`trailer.<key-alias>.key`::\n+\tDefines a _<key-alias>_ for the _<key>_. The _<key-alias>_ must be a\n+\tprefix (case does not matter) of the _<key>_. For example, in `git\n+\tconfig trailer.ack.key \"Acked-by\"` the `Acked-by` is the _<key>_ and\n+\tthe `ack` is the _<key-alias>_. This configuration allows the shorter\n \t`--trailer \"ack:...\"` invocation on the command line using the \"ack\"\n-\t<keyAlias> instead of the longer `--trailer \"Acked-by:...\"`.\n+\t`<key-alias>` instead of the longer `--trailer \"Acked-by:...\"`.\n +\n-At the end of the <key>, a separator can appear and then some\n-space characters. By default the only valid separator is ':',\n+At the end of the _<key>_, a separator can appear and then some\n+space characters. By default the only valid separator is `:`,\n but this can be changed using the `trailer.separators` config\n variable.\n +\n If there is a separator in the key, then it overrides the default\n separator when adding the trailer.\n \n-trailer.<keyAlias>.where::\n-\tThis option takes the same values as the 'trailer.where'\n+`trailer.<key-alias>.where`::\n+\tThis option takes the same values as the `trailer.where`\n \tconfiguration variable and it overrides what is specified by\n-\tthat option for trailers with the specified <keyAlias>.\n+\tthat option for trailers with the specified _<key-alias>_.\n \n-trailer.<keyAlias>.ifexists::\n-\tThis option takes the same values as the 'trailer.ifexists'\n+`trailer.<key-alias>.ifexists`::\n+\tThis option takes the same values as the `trailer.ifexists`\n \tconfiguration variable and it overrides what is specified by\n-\tthat option for trailers with the specified <keyAlias>.\n+\tthat option for trailers with the specified _<key-alias>_.\n \n-trailer.<keyAlias>.ifmissing::\n-\tThis option takes the same values as the 'trailer.ifmissing'\n+`trailer.<key-alias>.ifmissing`::\n+\tThis option takes the same values as the `trailer.ifmissing`\n \tconfiguration variable and it overrides what is specified by\n-\tthat option for trailers with the specified <keyAlias>.\n+\tthat option for trailers with the specified _<key-alias>_.\n \n-trailer.<keyAlias>.command::\n-\tDeprecated in favor of 'trailer.<keyAlias>.cmd'.\n-\tThis option behaves in the same way as 'trailer.<keyAlias>.cmd', except\n+`trailer.<key-alias>.command`::\n+\tDeprecated in favor of `trailer.<key-alias>.cmd`.\n+\tThis option behaves in the same way as `trailer.<key-alias>.cmd`, except\n \tthat it doesn't pass anything as argument to the specified command.\n-\tInstead the first occurrence of substring $ARG is replaced by the\n-\t<value> that would be passed as argument.\n+\tInstead the first occurrence of substring `$ARG` is replaced by the\n+\t_<value>_ that would be passed as argument.\n +\n-Note that $ARG in the user's command is\n-only replaced once and that the original way of replacing $ARG is not safe.\n+Note that `$ARG` in the user's command is\n+only replaced once and that the original way of replacing `$ARG` is not safe.\n +\n-When both 'trailer.<keyAlias>.cmd' and 'trailer.<keyAlias>.command' are given\n-for the same <keyAlias>, 'trailer.<keyAlias>.cmd' is used and\n-'trailer.<keyAlias>.command' is ignored.\n+When both `trailer.<key-alias>.cmd` and `trailer.<key-alias>.command` are given\n+for the same _<key-alias>_, `trailer.<key-alias>.cmd` is used and\n+`trailer.<key-alias>.command` is ignored.\n \n-trailer.<keyAlias>.cmd::\n+`trailer.<key-alias>.cmd`::\n \tThis option can be used to specify a shell command that will be called\n-\tonce to automatically add a trailer with the specified <keyAlias>, and then\n-\tcalled each time a '--trailer <keyAlias>=<value>' argument is specified to\n-\tmodify the <value> of the trailer that this option would produce.\n+\tonce to automatically add a trailer with the specified _<key-alias>_, and then\n+\tcalled each time a `--trailer <key-alias>=<value>` argument is specified to\n+\tmodify the _<value>_ of the trailer that this option would produce.\n +\n When the specified command is first called to add a trailer\n-with the specified <keyAlias>, the behavior is as if a special\n-'--trailer <keyAlias>=<value>' argument was added at the beginning\n-of the \"git interpret-trailers\" command, where <value>\n-is taken to be the standard output of the command with any\n-leading and trailing whitespace trimmed off.\n+with the specified _<key-alias>_, the behavior is as if a special\n+`--trailer <key-alias>=<value>` argument was added at the beginning\n+of linkgit:git-interpret-trailers[1], where _<value>_ is taken to be the\n+standard output of the command with any leading and trailing whitespace\n+trimmed off.\n +\n-If some '--trailer <keyAlias>=<value>' arguments are also passed\n+If some `--trailer <key-alias>=<value>` arguments are also passed\n on the command line, the command is called again once for each\n-of these arguments with the same <keyAlias>. And the <value> part\n+of these arguments with the same _<key-alias>_. And the _<value>_ part\n of these arguments, if any, will be passed to the command as its\n-first argument. This way the command can produce a <value> computed\n-from the <value> passed in the '--trailer <keyAlias>=<value>' argument.\n+first argument. This way the command can produce a _<value>_ computed\n+from the _<value>_ passed in the `--trailer <key-alias>=<value>`\n+argument.\n-- \n2.53.0.32.gf6228eaf9cc\n\n"},{"id":"539169","messageId":"doc_interpret-tr_source_transl.50e@msgid.xyz","threadId":"65217","inReplyTo":"V2_CV_doc_interpret-tr_synopsis.50a@msgid.xyz","subject":"[PATCH v2 4/4] interpret-trailers: use placeholder instead of *","fromName":"","fromEmail":"kristofferhaugsbakk@fastmail.com","sentAt":"2026-03-16T21:48:27Z","receivedAt":"2026-03-16T21:50:14Z","isPatch":true,"sender":{"key":"kristofferhaugsbakk@fastmail.com","avatar":null},"body":"From: Kristoffer Haugsbakk <code@khaugsbakk.name>\n\nUse `<key-alias>` instead of `*` in order to be consistent with\nthe documentation.\n\nSigned-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>\n---\n builtin/interpret-trailers.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/builtin/interpret-trailers.c b/builtin/interpret-trailers.c\nindex 41b0750e5af..4b617c3ecb0 100644\n--- a/builtin/interpret-trailers.c\n+++ b/builtin/interpret-trailers.c\n@@ -211,7 +211,7 @@ int cmd_interpret_trailers(int argc,\n \t\t\t     N_(\"action if trailer is missing\"), option_parse_if_missing),\n \n \t\tOPT_BOOL(0, \"only-trailers\", &opts.only_trailers, N_(\"output only the trailers\")),\n-\t\tOPT_BOOL(0, \"only-input\", &opts.only_input, N_(\"do not apply trailer.* configuration variables\")),\n+\t\tOPT_BOOL(0, \"only-input\", &opts.only_input, N_(\"do not apply trailer.<key-alias> configuration variables\")),\n \t\tOPT_BOOL(0, \"unfold\", &opts.unfold, N_(\"reformat multiline trailer values as single-line values\")),\n \t\tOPT_CALLBACK_F(0, \"parse\", &opts, NULL, N_(\"alias for --only-trailers --only-input --unfold\"),\n \t\t\tPARSE_OPT_NOARG | PARSE_OPT_NONEG, parse_opt_parse),\n-- \n2.53.0.32.gf6228eaf9cc\n\n"}]}