git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH 0/5] make interpret-trailers useful for parsing
@ 2017-08-09 12:21 Jeff King
  2017-08-09 12:22 ` [PATCH 1/5] trailer: put process_trailers() options into a struct Jeff King
                   ` (6 more replies)
  0 siblings, 7 replies; 68+ messages in thread
From: Jeff King @ 2017-08-09 12:21 UTC (permalink / raw)
  To: git

Parsing trailers out of a commit message is _mostly_ easy, but there
area a lot of funny corner cases (e.g., heuristics for how many
non-trailers must be present before a final paragraph isn't a trailer
block anymore).  The code in trailer.c already knows about these corner
cases, but there's no way to access it from the command line.

This series teaches interpret-trailers to parse and output just the
trailers. So now you can do:

  $ git log --format=%B -1 8d44797cc91231cd44955279040dc4a1ee0a797f |
    git interpret-trailers --parse
  Signed-off-by: Hartmut Henkel <henkel@vh-s.de>
  Helped-by: Stefan Beller <sbeller@google.com>
  Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
  Acked-by: Matthias Rüster <matthias.ruester@gmail.com>

I considered a few different approaches before deciding on
what's here:

  1. The output format is actually the normal "key: value" trailers. I
     considered something more structured like JSON. But the "key:
     value" format is quite easy to parse, once it has been normalized
     (finding the trailers, unfolding whitespace continuation, etc).

  2. This series introduces several orthogonal options which can be used
     together to achieve my goal, when there could just be a "parse"
     mode. Since interpret-trailers is plumbing, I reasoned that the
     individual options might still be useful apart from each other (for
     instance, you could re-normalize existing trailers while writing
     your new ones from a commit hook). I did add a "--parse" for
     convenience and to help point users in the right direction.

     For the same reason (and so we could build on other orthogonal
     features like --in-place and --trim-empty), I decided against
     having a separate command like "git parse-trailers".

  [1/5]: trailer: put process_trailers() options into a struct
  [2/5]: interpret-trailers: add an option to show only the trailers
  [3/5]: interpret-trailers: add an option to show only existing trailers
  [4/5]: interpret-trailers: add an option to normalize output
  [5/5]: interpret-trailers: add --parse convenience option

 Documentation/git-interpret-trailers.txt | 17 ++++++++
 builtin/interpret-trailers.c             | 34 ++++++++++++---
 t/t7513-interpret-trailers.sh            | 73 ++++++++++++++++++++++++++++++++
 trailer.c                                | 65 ++++++++++++++++++++++------
 trailer.h                                | 12 +++++-
 5 files changed, 180 insertions(+), 21 deletions(-)

-Peff

^ permalink raw reply	[flat|nested] 68+ messages in thread

end of thread, other threads:[~2017-08-17 18:19 UTC | newest]

Thread overview: 68+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-09 12:21 [PATCH 0/5] make interpret-trailers useful for parsing Jeff King
2017-08-09 12:22 ` [PATCH 1/5] trailer: put process_trailers() options into a struct Jeff King
2017-08-09 12:24 ` [PATCH 2/5] interpret-trailers: add an option to show only the trailers Jeff King
2017-08-09 17:52   ` Stefan Beller
2017-08-09 17:55     ` Stefan Beller
2017-08-09 18:35   ` Jonathan Tan
2017-08-10  7:40     ` Jeff King
2017-08-09 12:24 ` [PATCH 3/5] interpret-trailers: add an option to show only existing trailers Jeff King
2017-08-09 18:18   ` Stefan Beller
2017-08-10  7:32     ` Jeff King
2017-08-10 17:27       ` Stefan Beller
2017-08-10 17:33         ` Jeff King
2017-08-10 17:38           ` Stefan Beller
2017-08-10 18:43           ` Junio C Hamano
2017-08-09 18:38   ` Jonathan Tan
2017-08-10  7:36     ` Jeff King
2017-08-09 12:25 ` [PATCH 4/5] interpret-trailers: add an option to normalize output Jeff King
2017-08-09 12:26 ` [PATCH 5/5] interpret-trailers: add --parse convenience option Jeff King
2017-08-09 18:20   ` Stefan Beller
2017-08-10  7:59     ` Jeff King
2017-08-09 17:19 ` [PATCH 0/5] make interpret-trailers useful for parsing Junio C Hamano
2017-08-10  7:04   ` Jacob Keller
2017-08-10  7:28     ` Jeff King
2017-08-10 18:42       ` Junio C Hamano
2017-08-13 19:03         ` Jacob Keller
2017-08-10  8:02 ` Jeff King
2017-08-10  8:03   ` [PATCH 1/5] trailer: put process_trailers() options into a struct Jeff King
2017-08-10  8:03   ` [PATCH 2/5] interpret-trailers: add an option to show only the trailers Jeff King
2017-08-10  8:03   ` [PATCH 3/5] interpret-trailers: add an option to show only existing trailers Jeff King
2017-08-10  8:03   ` [PATCH 4/5] interpret-trailers: add an option to normalize output Jeff King
2017-08-10 18:35     ` Stefan Beller
2017-08-10 18:37       ` Jeff King
2017-08-10 19:39         ` Christian Couder
2017-08-10 19:42           ` Jeff King
2017-08-10 20:26             ` Christian Couder
2017-08-10 19:44           ` Stefan Beller
2017-08-10 21:06             ` Christian Couder
2017-08-10 21:10               ` Jeff King
2017-08-10 23:02                 ` Ramsay Jones
2017-08-10 23:10                   ` Jeff King
2017-08-10 23:36                     ` Ramsay Jones
2017-08-11  7:02                     ` Christian Couder
2017-08-11  9:06                       ` Jeff King
2017-08-11 19:02                         ` Christian Couder
2017-08-10  8:03   ` [PATCH 5/5] interpret-trailers: add --parse convenience option Jeff King
2017-08-10 18:03   ` [PATCH 0/5] make interpret-trailers useful for parsing Jeff King
2017-08-10 18:03     ` [PATCH v3 1/5] trailer: put process_trailers() options into a struct Jeff King
2017-08-10 18:04     ` [PATCH v3 2/5] interpret-trailers: add an option to show only the trailers Jeff King
2017-08-10 18:28       ` Stefan Beller
2017-08-10 18:31         ` Jeff King
2017-08-10 18:49           ` Junio C Hamano
2017-08-10 18:04     ` [PATCH v3 3/5] interpret-trailers: add an option to show only existing trailers Jeff King
2017-08-10 18:04     ` [PATCH v3 4/5] interpret-trailers: add an option to normalize output Jeff King
2017-08-10 18:04     ` [PATCH v3 5/5] interpret-trailers: add --parse convenience option Jeff King
2017-08-10 18:35     ` [PATCH 0/5] make interpret-trailers useful for parsing Stefan Beller
2017-08-10 19:43       ` Junio C Hamano
2017-08-15 10:22     ` [PATCH v4 0/8] trailer parsing via interpret-trailers and %(trailers) Jeff King
2017-08-15 10:23       ` [PATCH v4 1/8] trailer: put process_trailers() options into a struct Jeff King
2017-08-15 10:23       ` [PATCH v4 2/8] interpret-trailers: add an option to show only the trailers Jeff King
2017-08-15 10:23       ` [PATCH v4 3/8] interpret-trailers: add an option to show only existing trailers Jeff King
2017-08-15 10:23       ` [PATCH v4 4/8] interpret-trailers: add an option to unfold values Jeff King
2017-08-15 10:23       ` [PATCH v4 5/8] interpret-trailers: add --parse convenience option Jeff King
2017-08-15 11:26         ` Martin Ågren
2017-08-16  8:20           ` Jeff King
2017-08-17 18:19             ` Martin Ågren
2017-08-15 10:23       ` [PATCH v4 6/8] pretty: move trailer formatting to trailer.c Jeff King
2017-08-15 10:24       ` [PATCH v4 7/8] t4205: refactor %(trailers) tests Jeff King
2017-08-15 10:25       ` [PATCH v4 8/8] pretty: support normalization options for %(trailers) Jeff King

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).