On Thu, Aug 10, 2017 at 12:04:49AM -0700, Jacob Keller wrote: > >> $ git log --format=%B -1 8d44797cc91231cd44955279040dc4a1ee0a797f | > >> git interpret-trailers --parse > >> Signed-off-by: Hartmut Henkel <henkel@xxxxxxx> > >> Helped-by: Stefan Beller <sbeller@xxxxxxxxxx> > >> Signed-off-by: Ralf Thielow <ralf.thielow@xxxxxxxxx> > >> Acked-by: Matthias Rüster <matthias.ruester@xxxxxxxxx> > > > > Thank-you, thank-you, thank-you. > > > > The above example made me wonder if we also want a format specifier > > to do the above without piping, but it turns out that we already > > have "log --format=%(trailers)", so we are good ;-) > > I was going to say, I thought we had a way to get trailers for a > commit via the pretty format, since that is what i used in the past. I do like that you could get the trailers for many commits in a single invocation. That doesn't matter for my current use-case, but obviously piping through O(n) interpret-trailers invocations is a bad idea. But there are a few difficulties with using %(trailers) for this, as it shows everything between the start/end points of the trailer block. In particular: 1. You don't get any kind of normalization, so you're on your own for parsing things like whitespace continuation, extra spaces before separators, etc. 2. It prints non-trailers that fall inside the block. For instance: $ git commit --allow-empty -F - <<-\EOF subject body Signed-off-by: me this is not a trailer Signed-off-by: you EOF $ git log -1 --format=%B | git interpret-trailers --parse Signed-off-by: me Signed-off-by: you $ git log -1 --format='%(trailers)' Signed-off-by: me this is not a trailer Signed-off-by: you For (1) I think many callers would prefer to see the original formatting. Maybe we'd need a %(trailers:normalize) or something. I'm tempted to call (2) a bug, but I guess it's unclear whether callers would want to see the whole block, or if they really want just the individual trailers. -Peff