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

git format-patch --range-diff bug?

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Nov 12, 2020, 17:43 UTC
Message-ID
<20201112174353.GD4270@szeder.dev>

I've just run into an unexpected looking range-diff generated by 'git format-patch -1 --range-diff=...'. While the 'git range-diff' command correctly pairs up the old and new versions of the commit, 'git format-patch --range-diff' somehow doesn't and reports it in a weird way.

The test below demonstrates the issue, though it doesn't fail but only prints the outputs of those commands:

  ---  >8  ---
#!/bin/sh
test_description='test'
. ./test-lib.sh
test_expect_success 'test' '
	test_tick &&
	printf "%s\n" 0 1 2 3 4 5 6 7 8 9 >file &&
	git add file &&
	git commit -m initial &&
	git checkout -b v1 &&
	echo foo >>file &&
	git commit -m change file &&
	git checkout -b v2 master &&
	echo bar >>file &&
	git commit -m change file &&
	: The output of the range-diff command is what I would expect to be included in the generated patch &&
	git range-diff v1...v2 &&
	: But that is not what we get embedded in the generated patch &&
	git format-patch -1 --range-diff=v1...v2 v2 &&
	sed -n -e "/^Range-diff:$/,/^$/ p" 0001-change.patch &&
	: Adding the range-diff to the cover letter doesnt seem to help &&
	git format-patch -1 --range-diff=v1...v2 --cover-letter v2 &&
	sed -n -e "/^Range-diff:$/,$ p" 0000-cover-letter.patch
'
test_done
  ---  8<  ---
And here is the relevant part of the output:
+ : The output of the range-diff command is what I would expect to be
included in the generated patch
+ git range-diff v1...v2
1:  f8c2d0b ! 1:  83c34a8 change
    @@ -9,4 +9,4 @@
      7
      8
      9
    -+foo
    ++bar
+ : But that is not what we get embedded in the generated patch
+ git format-patch -1 --range-diff=v1...v2 v2
0001-change.patch
+ sed -n -e /^Range-diff:$/,/^$/ p 0001-change.patch
Range-diff:
1:  83c34a8 = 1:  83c34a8 change
2:  f8c2d0b < -:  ------- change
+ : Adding the range-diff to the cover letter doesnt seem to help
+ git format-patch -1 --range-diff=v1...v2 --cover-letter v2
0000-cover-letter.patch
0001-change.patch
+ sed -n -e /^Range-diff:$/,$ p 0000-cover-letter.patch
Range-diff:
1:  83c34a8 = 1:  83c34a8 change
2:  f8c2d0b < -:  ------- change
-- 
2.18.0.584.g40ce41604d
Next: Junio C Hamano
Message 1 of 5 in “git format-patch --range-diff bug?”
  1. SZEDER GáborNov 12, 2020
  2. Junio C HamanoNov 12, 2020
  3. Eric SunshineNov 12, 2020
  4. Junio C HamanoNov 12, 2020
  5. Eric SunshineNov 12, 2020

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.