git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Bug Report: Multi-line trailers containing empty lines break parsing

From
Christian Couder <christian.couder@gmail.com>
Date
Mar 25, 2021, 07:53 UTC
Message-ID
<CAP8UFD0rRff7oCMH=DeTQ-tZw7STLwSHLecWxRr_rQVyHuxJuA@mail.gmail.com>
In-Reply-To
<xmqqsg4l3h32.fsf@gitster.g>
On Tue, Mar 23, 2021 at 6:39 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 26 quoted lines
>
> Christian Couder <christian.couder@gmail.com> writes:
>
> > So I thought that blank lines should not appear in the trailers. And
> > if any appears, it means that the trailers should start after the last
> > blank line.
>
> I think that is a good principle to stick to.
>
> >> >  - if the second "multi:" trailer did not have the funny blank line
> >> >    before "_two", the expected output would still be "multi:"
> >> >    followed by "one two three", iow, the line after the second
> >> >    "multi: one" is a total no-op?  If we added many more " \n" lines
> >> >    there, they are all absorbed and ignored?  It somehow feels wrong
> >>
> >> That's definitely the outcome of this patch, but I agree it feels wrong.
> >> I'm not sure that we define the behavior that strictly in
> >> git-interpret-trailers(1), so we have some wiggle room, I guess.
> >
> > Any patch to relax how blank lines and other aspects of trailers
> > parsing in my opinion should come with some documentation change to
> > explain what we now accept and what we don't accept, and also tests to
> > enforce that.
>
> OK.  But do we document clearly what we accept and we don't before
> any change?
Maybe it's not enough, but the doc already has the following:

------ Existing trailers are extracted from the input message by looking for a group of one or more lines that (i) is all trailers, or (ii) contains at least one Git-generated or user-configured trailer and consists of at least 25% trailers. The group must be preceded by one or more empty (or whitespace-only) lines. The group must either be at the end of the message or be the last non-whitespace lines before a line that starts with '---' (followed by a space or the end of the line). Such three minus signs start the patch part of the message. See also `--no-divider` below.

When reading trailers, there can be whitespaces after the token, the separator and the value. There can also be whitespaces inside the token and the value. The value may be split over multiple lines with each subsequent line starting with whitespace, like the "folding" in RFC 822. ------

Previous: Junio C HamanoNext: ZheNing Hu
Message 8 of 12 in “Bug Report: Multi-line trailers containing empty lines break parsing”
  1. Matthias BuehlmannFeb 15, 2021
  2. Junio C HamanoFeb 16, 2021
  3. Taylor BlauFeb 16, 2021
  4. Junio C HamanoFeb 16, 2021
  5. Taylor BlauFeb 16, 2021
  6. Christian CouderMar 23, 2021
  7. Junio C HamanoMar 23, 2021
  8. Christian CouderMar 25, 2021
  9. ZheNing HuMar 25, 2021
  10. Junio C HamanoMar 25, 2021
  11. ZheNing HuMar 26, 2021
  12. Junio C HamanoMar 25, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.