Message ID | 20200707174049.21714-2-chriscool@tuxfamily.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for %(contents:size) in ref-filter | expand |
Christian Couder <christian.couder@gmail.com> writes: > +The complete message of a commit or tag object is `contents`. This > +field can also be used in the following ways: > + > +contents:subject:: > + The "subject" of the commit or tag message. It's actually the > + concatenation of all lines of the commit message up to the > + first blank line. Let's avoid confusing readers by saying "A is X. It's actually Y". The first paragraph of the message, which typically is a single line, is taken as the "subject" of the commit or the tag message. > +contents:body:: > + The "body" of the commit or tag message. It's made of the > + lines after the first blank line. The remainder of the commit or the tag message that follows the "subject". > +contents:signature:: > + The optional GPG signature. I _think_ this only applies to signed tag objects and not signed commit objects, but this text does not help to decide if I am right. > +contents:lines=N:: > + The first `N` lines of the message. Good.
On Tue, Jul 7, 2020 at 9:26 PM Junio C Hamano <gitster@pobox.com> wrote: > > Christian Couder <christian.couder@gmail.com> writes: > > +contents:subject:: > > + The "subject" of the commit or tag message. It's actually the > > + concatenation of all lines of the commit message up to the > > + first blank line. > > Let's avoid confusing readers by saying "A is X. It's actually Y". > > The first paragraph of the message, which typically is a single > line, is taken as the "subject" of the commit or the tag > message. Ok. > > +contents:body:: > > + The "body" of the commit or tag message. It's made of the > > + lines after the first blank line. > > The remainder of the commit or the tag message that follows the > "subject". Ok. > > +contents:signature:: > > + The optional GPG signature. > > I _think_ this only applies to signed tag objects and not signed > commit objects, but this text does not help to decide if I am > right. You are right. It doesn't work for commits: --------------------------------------------------- $ git cat-file commit refs/heads/signed_commit tree 9773e6a54521a5d99928685e5f62e937fc6a7593 parent 1d1083b4c06fbb6055a2bd3d665a6d81468db5f5 author Christian Couder <chriscool@tuxfamily.org> 1594397089 +0200 committer Christian Couder <chriscool@tuxfamily.org> 1594397089 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQGzBAABCgAdFiEElaRidyyI6IQbXM36ch8PKcZMVRkFAl8IkaEACgkQch8PKcZM [...] dkYKcRC3 =fRMN -----END PGP SIGNATURE----- Signed commit $ git for-each-ref --format='%(contents:signature)' refs/heads/signed_commit --------------------------------------------------- So I changed the description to: contents:signature:: The optional GPG signature of the tag.
diff --git a/Documentation/git-for-each-ref.txt b/Documentation/git-for-each-ref.txt index 6dcd39f6f6..2db9779d54 100644 --- a/Documentation/git-for-each-ref.txt +++ b/Documentation/git-for-each-ref.txt @@ -232,12 +232,24 @@ Fields that have name-email-date tuple as its value (`author`, `committer`, and `tagger`) can be suffixed with `name`, `email`, and `date` to extract the named component. -The complete message in a commit and tag object is `contents`. -Its first line is `contents:subject`, where subject is the concatenation -of all lines of the commit message up to the first blank line. The next -line is `contents:body`, where body is all of the lines after the first -blank line. The optional GPG signature is `contents:signature`. The -first `N` lines of the message is obtained using `contents:lines=N`. +The complete message of a commit or tag object is `contents`. This +field can also be used in the following ways: + +contents:subject:: + The "subject" of the commit or tag message. It's actually the + concatenation of all lines of the commit message up to the + first blank line. + +contents:body:: + The "body" of the commit or tag message. It's made of the + lines after the first blank line. + +contents:signature:: + The optional GPG signature. + +contents:lines=N:: + The first `N` lines of the message. + Additionally, the trailers as interpreted by linkgit:git-interpret-trailers[1] are obtained as `trailers` (or by using the historical alias `contents:trailers`). Non-trailer lines from the trailer block can be omitted
Let's avoid a big dense paragraph by using an unordered list for the %(contents:XXXX) format specifiers. Suggested-by: Jeff King <peff@peff.net> Signed-off-by: Christian Couder <chriscool@tuxfamily.org> --- Documentation/git-for-each-ref.txt | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-)