Thread (1 message) 1 message, 1 author, 2020-02-07

Re: bug? illegal text in commit log

From: Junio C Hamano <hidden>
Date: 2020-02-07 21:12:41

René Scharfe [off-list ref] writes:
That's a good idea from a usability point of view.  However, mailinfo()
parses patches line by line.  It doesn't know the total number of lines
until it's done.  (It would if the Lines header from RFC 1036 was
mandatory for emails; RFC 2076 says it's "not standardized for use in
e-mail".)  It cannot easily go back at that point.

Reading the whole message into a buffer or a temporary file would be an
option, but that would give up the nice property that patches are
streamed.
True, but we could do a two-pass approach, perhaps?  That is

 * The first pass does exactly the same as what today's code does,
   PLUS it prepares for the case where we thought the log message
   ended because we saw "diff -" or "Index: " before seeing "---",
   by scanning for the first "---"while running handle_patch().

   If there is no such "oops, a 'diff -' in the log message fooled
   us" event, we complete with what today's code does.

 * But if we detect such a case during the first pass, we run
   ourselves again with the same input and arguments, PLUS an extra,
   new option, which tells us that "we know '---' exists in the
   input and it *is* the patchbreak.  This of course can be done
   only when the standard input is seekable, but builtin/am.c does
   store the mail in a file, so...
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help