Skip to content

Commit f6c013d

Browse files
committed
signature-format.txt: explain and illustrate multi-line headers
A signature attached to a signed commit, and the contents of the commit that merged a signed tag, are both recorded as a value of an object header field as a multi-line value, and are subject to the formatting convention for multi-line values in the headers, with a leading SP signaling that the rest of the line is a continuation of the previous line. Most notably, an empty line in such a multi-line value would result in a line with a sole SP on it. Examples in the signature-format technical documentation include a few of these cases but we did not show these otherwise invisible SPs in the example. These trailing spaces cannot be seen on display or on paper, and forces the readers to look for them in their editors or pagers, even if we added them to the document. Extend the overview section to explain the multi-line value formatting and highlight these otherwise invisible SPs by inventing the "a dollar-sign at the end of line that appears after SP merely signals that there is a SP there, and the dollar-sign itself does not appear in the real file" notation, inspired by "cat -e" output, to help readers to learn exactly where such "a single SP that is originally an empty line" appears in the examples. Reported-by: Rob Browning <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 225bc32 commit f6c013d

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

Documentation/technical/signature-format.txt

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,22 @@ Signatures always begin with `-----BEGIN PGP SIGNATURE-----`
1313
and end with `-----END PGP SIGNATURE-----`, unless gpg is told to
1414
produce RFC1991 signatures which use `MESSAGE` instead of `SIGNATURE`.
1515

16+
Signatures sometimes appear as a part of the normal payload
17+
(e.g. a signed tag has the signature block appended after the payload
18+
that the signature applies to), and sometimes appear in the value of
19+
an object header (e.g. a merge commit that merged a signed tag would
20+
have the entire tag contents on its "mergetag" header). In the case
21+
of the latter, the usual multi-line formatting rule for object
22+
headers applies. I.e. the second and subsequent lines are prefixed
23+
with a SP to signal that the line is continued from the previous
24+
line.
25+
26+
This is even true for an originally empty line. In the following
27+
examples, the end of line that ends with a whitespace letter is
28+
highlighted with a `$` sign; if you are trying to recreate these
29+
example by hand, do not cut and paste them---they are there
30+
primarily to highlight extra whitespace at the end of some lines.
31+
1632
The signed payload and the way the signature is embedded depends
1733
on the type of the object resp. transaction.
1834

@@ -78,7 +94,7 @@ author A U Thor <[email protected]> 1465981137 +0000
7894
committer C O Mitter <[email protected]> 1465981137 +0000
7995
gpgsig -----BEGIN PGP SIGNATURE-----
8096
Version: GnuPG v1
81-
97+
$
8298
iQEcBAABAgAGBQJXYRjRAAoJEGEJLoW3InGJ3IwIAIY4SA6GxY3BjL60YyvsJPh/
8399
HRCJwH+w7wt3Yc/9/bW2F+gF72kdHOOs2jfv+OZhq0q4OAN6fvVSczISY/82LpS7
84100
DVdMQj2/YcHDT4xrDNBnXnviDO9G7am/9OE77kEbXrp7QPxvhjkicHNwy2rEflAA
@@ -128,13 +144,13 @@ mergetag object 04b871796dc0420f8e7561a895b52484b701d51a
128144
type commit
129145
tag signedtag
130146
tagger C O Mitter <[email protected]> 1465981006 +0000
131-
147+
$
132148
signed tag
133-
149+
$
134150
signed tag message body
135151
-----BEGIN PGP SIGNATURE-----
136152
Version: GnuPG v1
137-
153+
$
138154
iQEcBAABAgAGBQJXYRhOAAoJEGEJLoW3InGJklkIAIcnhL7RwEb/+QeX9enkXhxn
139155
rxfdqrvWd1K80sl2TOt8Bg/NYwrUBw/RWJ+sg/hhHp4WtvE1HDGHlkEz3y11Lkuh
140156
8tSxS3qKTxXUGozyPGuE90sJfExhZlW4knIQ1wt/yWqM+33E9pN4hzPqLwyrdods

0 commit comments

Comments
 (0)