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

Re: [PATCH v2] sequencer: require trailing NL in footers

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 26, 2017, 02:08 UTC
Message-ID
<xmqqinlrudij.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<20170426000741.GS28740@aiede.svl.corp.google.com>
Jonathan Nieder <jrnieder@gmail.com> writes:
Show 20 quoted lines
> Jonathan Tan wrote:
>
>> Reported-by: Brian Norris <computersforpeace@gmail.com>
>> Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
>> ---
> [...]
>>  sequencer.c              | 11 +++++++++++
>>  t/t3511-cherry-pick-x.sh | 14 ++++++++++++++
>>  2 files changed, 25 insertions(+)
>
> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
>
> This is still pretty subtle (using the added newline that is added after
> a non-footer to turn the invalid footer into a valid one), but
>
>  * it is clear from the code that it will work correctly
>  * the new test ensures we'll continue to support this case
>  * it is understandable after a little head scratching
>  * I'm hoping the subtlety will go away once the code learns to deal
>    with ordinary non-footer text that has a missing newline

Hmph, perhaps we need another test that documents a known failure as well in the meantime?

Show 20 quoted lines
> [...]
>> --- a/t/t3511-cherry-pick-x.sh
>> +++ b/t/t3511-cherry-pick-x.sh
>> @@ -208,6 +208,20 @@ test_expect_success 'cherry-pick -x -s adds sob even when trailing sob exists fo
>>  	test_cmp expect actual
>>  '
>>  
>> +test_expect_success 'cherry-pick -x handles commits with no NL at end of message' '
>> +	pristine_detach initial &&
>> +	sha1=$(printf "title\n\nSigned-off-by: a" | git commit-tree -p initial mesg-with-footer^{tree}) &&
>
> nit: Should this use a more typical sign-off line with an email
> address, to avoid a false-positive success in case git becomes more
> strict about its signoffs in the future?
>
> Something like
>
> 	printf "title\n\nSigned-off-by: S. I. Gner <signer@example.com>" >msg &&
> 	sha1=$(git commit-tree -p initial mesg-with-footer^{tree} <msg) &&
> 	...

That is a good point and has an added benefit that the test script becomes easier to follow.

 t/t3511-cherry-pick-x.sh | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/t/t3511-cherry-pick-x.sh b/t/t3511-cherry-pick-x.sh
index 6f518020b2..c2b143802d 100755
--- a/t/t3511-cherry-pick-x.sh
+++ b/t/t3511-cherry-pick-x.sh
@@ -210,12 +210,14 @@ test_expect_success 'cherry-pick -x -s adds sob even when trailing sob exists fo
 
 test_expect_success 'cherry-pick -x handles commits with no NL at end of message' '
 	pristine_detach initial &&
-	sha1=$(printf "title\n\nSigned-off-by: a" | git commit-tree -p initial mesg-with-footer^{tree}) &&
+	signer="S. I. Gner <signer@example.com>" &&
+	printf "title\n\nSigned-off-by: %s" "$signer" >msg &&
+	sha1=$(git commit-tree -p initial mesg-with-footer^{tree} <msg) &&
 	git cherry-pick -x $sha1 &&
 	cat <<-EOF >expect &&
 		title
 
-		Signed-off-by: a
+		Signed-off-by: $signer
 		(cherry picked from commit $sha1)
 	EOF
 	git log -1 --pretty=format:%B >actual &&
Previous: Jonathan NiederNext: Johannes Schindelin
Message 16 of 18 in “[GIT 2.12.2 REGRESSION] git cherry-pick -x”
  1. Brian NorrisApr 21, 2017
  2. Stefan BellerApr 21, 2017
  3. Jeff KingApr 21, 2017
  4. sequencer: require trailing NL in footersJonathan Tan, Apr 25, 2017
  5. Stefan BellerApr 25, 2017
  6. Jonathan TanApr 25, 2017
  7. Stefan BellerApr 25, 2017
  8. Johannes SchindelinApr 25, 2017
  9. Jonathan NiederApr 25, 2017
  10. Brian NorrisApr 25, 2017
  11. Brian NorrisApr 26, 2017
  12. Johannes SchindelinApr 25, 2017
  13. Jonathan NiederApr 25, 2017
  14. sequencer: require trailing NL in footersJonathan Tan, Apr 25, 2017
  15. Jonathan NiederApr 26, 2017
  16. Junio C HamanoApr 26, 2017
  17. Johannes SchindelinApr 26, 2017
  18. sequencer: add newline before adding footersJonathan Tan, Apr 26, 2017

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.