Re: [PATCH] cherry-pick: Append -x line on separate paragraph

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH] cherry-pick: Append -x line on separate paragraph

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:54:38

Robin Stocker [off-list ref] writes:
 		if (opts->record_origin) {
+			/* Some implementations don't terminate message with final \n, so add it */
+			if (msg.message[strlen(msg.message)-1] != '\n')
+				strbuf_addch(&msgbuf, '\n');
I can agree that this is a good change.
+			strbuf_addch(&msgbuf, '\n');
But this is somewhat dubious.  Even if what we are adding is merely
an extra LF, that changes the mechanically generated output format
and can break existing hooks that read from these generated commit
log template.

Is there a reason better than "having an empty line there look
better to _me_" to justify this change?
 			strbuf_addstr(&msgbuf, "(cherry picked from commit ");
 			strbuf_addstr(&msgbuf, sha1_to_hex(commit->object.sha1));
 			strbuf_addstr(&msgbuf, ")\n");
Having said that, I've seen proposals to update this message to
format more like the other trailers, so that we would see this:

	The title of the original commit

	The log message taken from the original
        commit comes here.

	Signed-off-by: First person who signed off the original
        Signed-off-by: Another person who signed off the original
        Cherry-picked-from: a9bbc121ea850e49d52ba3cb5a6b7f8077d195d2
        
in the editor, to allow you to add your own Sign-off at the end to
make it look like this:

	The title of the original commit

	The log message taken from the original
        commit comes here.

	Signed-off-by: First person who signed off the original
        Signed-off-by: Another person who signed off the original
        Cherry-picked-from: a9bbc121ea850e49d52ba3cb5a6b7f8077d195d2
	Signed-off-by: Me who did the cherry-pick

I think that might be a worthwhile thing to do perhaps as an
optional behaviour (e.g. perhaps triggered with a new option
"--trailer", or with the same "-x" but only when "cherry-pick.origin
= trailer" configuration is set, or something).  At that point, the
output will look vastly different to existing hooks and those who
care how this field looks like are forced to be updated, but as long
as it is an opt-in feature, it may be worth it.

Re: [PATCH] cherry-pick: Append -x line on separate paragraph

From: Robin Stocker <hidden>
Date: 2016-06-15 22:54:38

Junio C Hamano writes:
Robin Stocker [off-list ref] writes:
quoted
 		if (opts->record_origin) {
+ /* Some implementations don't terminate message with final \n, so
add it */
+ if (msg.message[strlen(msg.message)-1] != '\n')
+ strbuf_addch(&msgbuf, '\n');
I can agree that this is a good change.
quoted
+ strbuf_addch(&msgbuf, '\n');
But this is somewhat dubious. Even if what we are adding is merely
an extra LF, that changes the mechanically generated output format
and can break existing hooks that read from these generated commit
log template.
Hm, for a script to break because of an extra LF it would have to be
very badly written. If it looks for "\n(cherry picked ...", it would
still work. But I see the point.
Is there a reason better than "having an empty line there look
better to _me_" to justify this change?
Yes:

* If the original commit message consisted just of a summary line,
  the commit message after -x would then not have a blank second
  line, which is bad style, e.g.:

The title of the original commit
(cherry picked ...)

* If the original message did not have any trailers, the appended
  text would stick to the last paragraph, even though it is a
  separate thing.

These don't apply to the git project itself, as its commit message
always have at least a Signed-off-by. But there are projects where
this is not the case and the above reasons apply.

Maybe the solution is to detect if the original commit message
ends with a trailer and in that case keep the existing behavior
of not inserting a blank line?
quoted
 			strbuf_addstr(&msgbuf, "(cherry picked from commit ");
 			strbuf_addstr(&msgbuf, sha1_to_hex(commit->object.sha1));
 			strbuf_addstr(&msgbuf, ")\n");
Having said that, I've seen proposals to update this message to
format more like the other trailers, so that we would see this:

The title of the original commit

The log message taken from the original
commit comes here.

Signed-off-by: First person who signed off the original
Signed-off-by: Another person who signed off the original
Cherry-picked-from: a9bbc121ea850e49d52ba3cb5a6b7f8077d195d2

in the editor, to allow you to add your own Sign-off at the end to
make it look like this:

The title of the original commit

The log message taken from the original
commit comes here.

Signed-off-by: First person who signed off the original
Signed-off-by: Another person who signed off the original
Cherry-picked-from: a9bbc121ea850e49d52ba3cb5a6b7f8077d195d2
Signed-off-by: Me who did the cherry-pick

I think that might be a worthwhile thing to do perhaps as an
optional behaviour (e.g. perhaps triggered with a new option
"--trailer", or with the same "-x" but only when "cherry-pick.origin
= trailer" configuration is set, or something). At that point, the
output will look vastly different to existing hooks and those who
care how this field looks like are forced to be updated, but as long
as it is an opt-in feature, it may be worth it.
Oh, I like that proposal. I'd lean towards a new --trailer option I
think.

It would have the same problem of having to append it on a separate
paragraph if the original commit message does not already have a
trailer though.

But I still think that adding the "(cherry picked ..." on a separate
paragraph would be a good thing until "Cherry-picked-from" can be
used.

Regards,
  Robin Stocker
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help