git-interpret-trailers(1)
=========================

NAME
----
git-interpret-trailers - Add or parse metadata in commit messages

SYNOPSIS
--------
[synopsis]
git interpret-trailers [--in-place] [--trim-empty]
			[(--trailer (<key>|<key-alias>)[(=|:)<value>])...]
			[--parse] [<file>...]

DESCRIPTION
-----------
Add or parse trailer metadata at the end of the otherwise
free-form part of a commit message, or any other kind of text.

A _trailer_ in its simplest form is a key-value pair with a colon as a
separator. The _key_ consists of ASCII alphanumeric characters and
hyphens (`-`). A _trailer block_ consists of one or more trailers. The
trailer block needs to be preceded by a blank line, where a _blank line_
is either an empty or a whitespace-only line. For example, in the
following commit message

------------------------------------------------
subject

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Signed-off-by: Alice <alice@example.com>
Signed-off-by: Bob <bob@example.com>
------------------------------------------------

the last two lines starting with `Signed-off-by` are trailers.

This command reads commit messages from either the
_<file>_ arguments or the standard input if no _<file>_ is specified.
If `--parse` is specified, the output consists of the parsed trailers
coming from the input, without influencing them with any command line
options or configuration variables.

Otherwise, this command applies `trailer.<key-alias>` configuration
variables (which could potentially add new trailers, as well as
reposition them), as well as any command line arguments that can
override configuration variables (such as `--trailer=...` which could
also add new trailers), to each input file. The result is emitted on the
standard output.

This command can also operate on the output of linkgit:git-format-patch[1],
which is more elaborate than a plain commit message. Namely, such output
includes a commit message (as above), a `---` divider line, and a patch part.
For these inputs, the divider and patch parts are not modified by
this command and are emitted as is on the output, unless
`--no-divider` is specified.

Some configuration variables control the way the `--trailer` arguments
are applied to each input and the way any existing trailer in
the input is changed. They also make it possible to
automatically add some trailers.

Let's consider new trailers added with `--trailer`.
By default, the new trailer will appear at the end of the trailer block.
Also by default, this new trailer will only be added
if the last trailer is different to it.
A trailer block will be created with only that trailer if a trailer
block does not already exist. Recall that a trailer block needs to be
preceded by a blank line, so a blank line will be inserted before the
new trailer block in that case.

This is how the new trailer is added: a `<key>=<value>` or
`<key>:<value>` argument given using `--trailer` will be appended after
the existing trailers. The _<key>_ and _<value>_ parts will be trimmed
to remove starting and trailing whitespace, and the resulting trimmed
_<key>_ and _<value>_ will appear in the output like this:

------------------------------------------------
key: value
------------------------------------------------

This means that the trimmed _<key>_ and _<value>_ will be separated by
"`:`{nbsp}" (one colon followed by one space).

Existing trailers are extracted from the input by looking for the
trailer block. A trailer block is a group of one or more lines that (i)
is all trailers, or (ii) contains at least one Git-generated or
user-configured trailer and consists of at
least 25% trailers.
The trailer block is by definition at the end of the commit message.
The message in turn is either (i) at the end of the input, or (ii) the
last non-whitespace lines before a line that starts with `---` (followed
by a space or the end of the line).

For convenience, a _<key-alias>_ can be configured to make using `--trailer`
shorter to type on the command line. This can be configured using the
`trailer.<key-alias>.key` configuration variable. The _<key-alias>_ must be a prefix
of the full _<key>_ string, although case sensitivity does not matter. For
example, if you have

------------------------------------------------
trailer.sign.key "Signed-off-by: "
------------------------------------------------

in your configuration, you only need to specify `--trailer="sign: foo"`
on the command line instead of `--trailer="Signed-off-by: foo"`.

When reading trailers, there can be no whitespace before or inside the
_<key>_, but any number of regular space and tab characters are allowed
between the _<key>_ and the separator. There can be whitespaces before,
inside or after the _<value>_. The _<value>_ may be split over multiple lines
with each subsequent line starting with at least one whitespace, like
the "folding" in RFC 822. Example:

------------------------------------------------
key: This is a very long value, with spaces and
  newlines in it.
------------------------------------------------

OTHER RULES
-----------

What was covered in the previous section are the rules that are relevant
for regular use. The following points are included for completeness.

--
* This command ignores comment lines (see `core.commentString` in
  linkgit:git-config[1]). This is for use with the `prepare-commit-msg`
  and `commit-msg` hooks.

* Candidate trailer lines that have `:` as the separator, that have no
  whitespace before the value part, and that start with `//` are not
  recognized as trailers. This is to avoid accidentally interpreting
  URLs as trailers (e.g. lines that start with `https://`).
--

OPTIONS
-------
`--in-place`::
`--no-in-place`::
	Edit the files in place. The default is `--no-in-place`.

`--trim-empty`::
`--no-trim-empty`::
	If the _<value>_ part of any trailer contains only whitespace,
	the whole trailer will be removed from the output.
	This applies to existing trailers as well as new trailers.
+
The default is `--no-trim-empty`.

`--trailer=<key>[(=|:)<value>]`::
`--no-trailer`::
	Specify a (_<key>_, _<value>_) pair that should be applied as a
	trailer to the inputs. See the description of this command. Can
	be given multiple times.
+
Use `--no-trailer` to reset the list.

`--where=<placement>`::
`--no-where`::
	Specify where all new trailers will be added.  A setting
	provided with `--where` overrides the `trailer.where` and any
	applicable `trailer.<key-alias>.where` configuration variables
	and applies to all `--trailer` options until the next occurrence of
	`--where` or `--no-where`. Possible placements are `after`,
	`before`, `end` or `start`.
+
Use `--no-where` to clear the effect of any previous use of `--where`,
such that the relevant configuration variables are no longer overridden.

`--if-exists=<action>`::
`--no-if-exists`::
	Specify what action will be performed when there is already at
	least one trailer with the same _<key>_ in the input.  A setting
	provided with `--if-exists` overrides the `trailer.ifExists` and any
	applicable `trailer.<key-alias>.ifExists` configuration variables
	and applies to all `--trailer` options until the next occurrence of
	`--if-exists` or `--no-if-exists`. Possible actions are `addIfDifferent`,
	`addIfDifferentNeighbor`, `add`, `replace` and `doNothing`.
+
Use `--no-if-exists` to clear the effect of any previous use of
`--if-exists`, such that the relevant configuration variables are no
longer overridden.

`--if-missing=<action>`::
`--no-if-missing`::
	Specify what action will be performed when there is no other
	trailer with the same _<key>_ in the input.  A setting
	provided with `--if-missing` overrides the `trailer.ifMissing` and any
	applicable `trailer.<key-alias>.ifMissing` configuration variables
	and applies to all `--trailer` options until the next occurrence of
	`--if-missing` or `--no-if-missing`. Possible actions are
	`doNothing` or `add`.
+
Use `--no-if-missing` to clear the effect of any previous use of
`--if-missing`, such that the relevant configuration variables are no
longer overridden.

`--only-trailers`::
`--no-only-trailers`::
	Output only the trailers, not any other parts of the
	input. The default is `--no-only-trailers`.

`--only-input`::
`--no-only-input`::
	Output only trailers that exist in the input; do not add any
	from the command-line or by applying `trailer.<key-alias>` configuration
	variables. The default is `--no-only-input`.

`--unfold`::
`--no-unfold`::
	If a trailer has a value that runs over multiple lines (aka "folded"),
	reformat the value into a single line. The default is `--no-unfold`.

`--parse`::
	A convenience alias for `--only-trailers --only-input
	--unfold`. This makes it easier to only see the trailers coming from the
	input without influencing them with any command line options or
	configuration variables, while also making the output machine-friendly with
	`--unfold`.
+
There is no convenience alias to negate this alias.

`--divider`::
`--no-divider`::
	Treat `---` as the end of the commit message. This is the default.
	Use `--no-divider` when you know your input contains just the
	commit message itself (and not an email or the output of
	linkgit:git-format-patch[1]).

CONFIGURATION VARIABLES
-----------------------

include::includes/cmd-config-section-all.adoc[]

include::config/trailer.adoc[]

EXAMPLES
--------

* Configure a `sign` trailer with a `Signed-off-by` key, and then
  add two of these trailers to a commit message file:
+
------------
$ git config trailer.sign.key "Signed-off-by"
$ cat msg.txt
subject

body text
$ git interpret-trailers --trailer 'sign: Alice <alice@example.com>' --trailer 'sign: Bob <bob@example.com>' <msg.txt
subject

body text

Signed-off-by: Alice <alice@example.com>
Signed-off-by: Bob <bob@example.com>
------------

* Use the `--in-place` option to edit a commit message file in place:
+
------------
$ cat msg.txt
subject

body text

Signed-off-by: Bob <bob@example.com>
$ git interpret-trailers --trailer 'Acked-by: Alice <alice@example.com>' --in-place msg.txt
$ cat msg.txt
subject

body text

Signed-off-by: Bob <bob@example.com>
Acked-by: Alice <alice@example.com>
------------

* Extract the last commit as a patch, and add a `Cc` and a
  `Reviewed-by` trailer to it:
+
------------
$ git format-patch -1
0001-foo.patch
$ git interpret-trailers --trailer 'Cc: Alice <alice@example.com>' --trailer 'Reviewed-by: Bob <bob@example.com>' 0001-foo.patch >0001-bar.patch
------------

* Configure a `sign` trailer with a command to automatically add a
  "`Signed-off-by:`{nbsp}" with the author information only if there is no
  "`Signed-off-by:`{nbsp}" already, and show how it works:
+
------------
$ cat msg1.txt
subject

body text
$ git config trailer.sign.key "Signed-off-by: "
$ git config trailer.sign.ifmissing add
$ git config trailer.sign.ifexists doNothing
$ git config trailer.sign.cmd 'echo "$(git config user.name) <$(git config user.email)>"'
$ git interpret-trailers --trailer sign <msg1.txt
subject

body text

Signed-off-by: Bob <bob@example.com>
$ cat msg2.txt
subject

body text

Signed-off-by: Alice <alice@example.com>
$ git interpret-trailers --trailer sign <msg2.txt
subject

body text

Signed-off-by: Alice <alice@example.com>
------------

* Configure a `fix` trailer with a key that contains a `#` and no
  space after this character, and show how it works:
+
------------
$ git config trailer.separators ":#"
$ git config trailer.fix.key "Fix #"
$ echo "subject" | git interpret-trailers --trailer fix=42
subject

Fix #42
------------

* Configure a `help` trailer with a cmd use a script `glog-find-author`
  which search specified author identity from git log in git repository
  and show how it works:
+
------------
$ cat ~/bin/glog-find-author
#!/bin/sh
test -n "$1" && git log --author="$1" --pretty="%an <%ae>" -1 || true
$ cat msg.txt
subject

body text
$ git config trailer.help.key "Helped-by: "
$ git config trailer.help.ifExists "addIfDifferentNeighbor"
$ git config trailer.help.cmd "~/bin/glog-find-author"
$ git interpret-trailers --trailer="help:Junio" --trailer="help:Couder" <msg.txt
subject

body text

Helped-by: Junio C Hamano <gitster@pobox.com>
Helped-by: Christian Couder <christian.couder@gmail.com>
------------

* Configure a `ref` trailer with a cmd use a script `glog-grep`
  to grep last relevant commit from git log in the git repository
  and show how it works:
+
------------
$ cat ~/bin/glog-grep
#!/bin/sh
test -n "$1" && git log --grep "$1" --pretty=reference -1 || true
$ cat msg.txt
subject

body text
$ git config trailer.ref.key "Reference-to: "
$ git config trailer.ref.ifExists "replace"
$ git config trailer.ref.cmd "~/bin/glog-grep"
$ git interpret-trailers --trailer="ref:Add copyright notices." <msg.txt
subject

body text

Reference-to: 8bc9a0c769 (Add copyright notices., 2005-04-07)
------------

* Configure a `see` trailer with a command to show the subject of a
  commit that is related, and show how it works:
+
------------
$ cat msg.txt
subject

body text

see: HEAD~2
$ cat ~/bin/glog-ref
#!/bin/sh
git log -1 --oneline --format="%h (%s)" --abbrev-commit --abbrev=14
$ git config trailer.see.key "See-also: "
$ git config trailer.see.ifExists "replace"
$ git config trailer.see.ifMissing "doNothing"
$ git config trailer.see.cmd "glog-ref"
$ git interpret-trailers --trailer=see <msg.txt
subject

body text

See-also: fe3187489d69c4 (subject of related commit)
------------

* Configure a commit template with some trailers with empty values
  (using sed to show and keep the trailing spaces at the end of the
  trailers), then configure a commit-msg hook that uses
  git-interpret-trailers(1) to remove trailers with empty values and to
  add a `git-version` trailer:
+
------------
$ cat temp.txt
***subject***

***message***

Fixes: Z
Cc: Z
Reviewed-by: Z
Signed-off-by: Z
$ sed -e 's/ Z$/ /' temp.txt > commit_template.txt
$ git config commit.template commit_template.txt
$ cat .git/hooks/commit-msg
#!/bin/sh
git interpret-trailers --trim-empty --trailer "git-version: \$(git describe)" "\$1" > "\$1.new"
mv "\$1.new" "\$1"
$ chmod +x .git/hooks/commit-msg
------------

* Here we try to use three different trailer keys. But it fails because
  two of them are not recognized as trailer keys.
+
----
$ cat msg.txt
subject

Skapad-på: some-branch
Hash-in-v6.11: 45c12d3269fe48f22834320c782ffe86c3560f2c
Reviewed-by: Alice <alice@example.com>
$ git interpret-trailers --only-trailers <msg.txt
$
----
+
Recall that a trailer key has to consist of only ASCII alphanumeric
characters and hyphens, and this does not hold for the two first
supposed trailer keys. And now none are recognized as trailers because
the candidate trailer block has at least one non-trailer line, even
though `Reviewed-by` is a valid trailer key. Recall that a trailer block
has to either (i) be all trailers, or (ii) consist of at least one
Git-generated or user-configured trailer (and some other conditions).
And (ii) is not satisfied since we have not configured any trailer keys.

SEE ALSO
--------
linkgit:git-commit[1], linkgit:git-format-patch[1], linkgit:git-config[1]

GIT
---
Part of the linkgit:git[1] suite
