From: Junio C Hamano <gitster@pobox.com>
To: Christian Couder <christian.couder@gmail.com>
Cc: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>,
git <git@vger.kernel.org>,
Christian Couder <chriscool@tuxfamily.org>
Subject: Re: [PATCH v2 2/2] trailer: support multiline title
Date: Wed, 26 Aug 2015 12:48:57 -0700 [thread overview]
Message-ID: <xmqqegip3k5y.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1440557461-1078-2-git-send-email-chriscool@tuxfamily.org> (Christian Couder's message of "Wed, 26 Aug 2015 04:51:01 +0200")
Christian Couder <christian.couder@gmail.com> writes:
> We currently ignore the first line passed to `git interpret-trailers`,
> when looking for the beginning of the trailers.
>
> Unfortunately this does not work well when a commit is created with a
> line break in the title, using for example the following command:
>
> git commit -m 'place of
> code: change we made'
>
> In this special case, it is best to look at the first line and if it
> does not contain only spaces, consider that the second line is not a
> trailer.
> ---
Missing sign-off, but more importantly, "let's special case the
first line" followed by "oh, that is not enough, we need to check
the found one is sensible and tweak it otherwise" smells like
incrementally papering over things.
I think the analysis behind the first patch is correct. It stops
the backward scan of the main loop to reach there by realizing that
the first line, which must be the first line of the patch title
paragraph, can never be a trailer.
To extend that correct realization to cover the case where the title
paragraph has more than one line, the right thing to do is to scan
forward from the beginning to find the first paragraph break, which
must be the end of the title paragraph, and exclude the whole thing,
wouldn't it?
That is, I am wondering why the patch is not more like this (there
may be off-by-one, but just to illustrate the approach; I didn't
even compile test this one so...)?
Puzzled...
static int find_trailer_start(struct strbuf **lines, int count)
{
- int start, only_spaces = 1;
+ int start, end_of_title, only_spaces = 1;
+
+ /* The first paragraph is the title and cannot be trailer */
+ for (start = 0; start < count; start++)
+ if (!lines[start]->len)
+ break; /* paragraph break */
+ end_of_title = start;
/*
* Get the start of the trailers by looking starting from the end
* for a line with only spaces before lines with one separator.
- * The first line must not be analyzed as the others as it
- * should be either the message title or a blank line.
*/
- for (start = count - 1; start >= 1; start--) {
+ for (start = count - 1; start >= end_of_title; start--) {
if (lines[start]->buf[0] == comment_line_char)
continue;
if (contains_only_spaces(lines[start]->buf)) {
next prev parent reply other threads:[~2015-08-26 19:49 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-26 2:51 [PATCH v2 1/2] trailer: ignore first line of message Christian Couder
2015-08-26 2:51 ` [PATCH v2 2/2] trailer: support multiline title Christian Couder
2015-08-26 6:07 ` Matthieu Moy
2015-08-26 6:28 ` Jacob Keller
2015-08-26 14:53 ` Christian Couder
2015-08-26 16:05 ` Junio C Hamano
2015-08-26 16:15 ` Matthieu Moy
2015-08-26 19:48 ` Junio C Hamano [this message]
2015-08-29 4:00 ` Christian Couder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqegip3k5y.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=Matthieu.Moy@grenoble-inp.fr \
--cc=chriscool@tuxfamily.org \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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 NNTP newsgroup(s).