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