Re: [PATCH 2/6] pretty: split oneline and email subject printing
On Wed, Mar 20, 2024, at 01:28, Jeff King wrote:
Show 39 quoted lines
> The pp_title_line() function is used for two formats: the oneline format
> and the subject line of the email format. But most of the logic in the
> function does not make any sense for oneline; it is about special
> formatting of email headers.
>
> Lumping the two formats together made sense long ago in 4234a76167
> (Extend --pretty=oneline to cover the first paragraph, 2007-06-11), when
> there was a lot of manual logic to paste lines together. But later,
> 88c44735ab (pretty: factor out format_subject(), 2008-12-27) pulled that
> logic into its own function.
>
> We can implement the oneline format by just calling that one function.
> This makes the intention of the code much more clear, as we know we only
> need to worry about those extra email options when dealing with actual
> email.
>
> While the intent here is cleanup, it is possible to trigger these cases
> in practice by running format-patch with an explicit --oneline option.
> But if you did, the results are basically nonsense. For example, with
> the preserve_subject flag:
>
> $ printf "%s\n" one two three | git commit --allow-empty -F -
> $ git format-patch -1 --stdout -k | grep ^Subject
> Subject: =?UTF-8?q?one=0Atwo=0Athree?=
> $ git format-patch -1 --stdout -k --oneline --no-signature
> 2af7fbe one
> two
> three
>
> Or with extra headers:
>
> $ git format-patch -1 --stdout --cc=me --oneline --no-signature
> 2af7fbe one two three
> Cc: me
>
> So I'd actually consider this to be an improvement, though you are
> probably crazy to use other formats with format-patch in the first place
> (arguably it should forbid non-email formats entirely, but that's a
> bigger change).
Makes sense. This make the code more focused.
Show 5 quoted lines
> As a bonus, it eliminates some pointless extra allocations for the
> oneline output. The email code, since it has to deal with wrapping,
> formats into an extra auxiliary buffer. The speedup is tiny, though like
> "rev-list --no-abbrev --format=oneline" seems to improve by a consistent
> 1-2% for me.
Nice. That could add up when formatting a moderate amount of patches.
--
Kristoffer Haugsbakk