Hi Thomas, On Mon, 13 Aug 2018, Thomas Gummerer wrote: > On 08/13, Thomas Rast via GitGitGadget wrote: > > From: Thomas Rast <tr@xxxxxxxxxxxxx> > > > > These are essentially lifted from https://github.com/trast/tbdiff, with > > light touch-ups to account for the command now being named `git > > range-diff`. > > > > Apart from renaming `tbdiff` to `range-diff`, only one test case needed > > to be adjusted: 11 - 'changed message'. > > > > The underlying reason it had to be adjusted is that diff generation is > > sometimes ambiguous. In this case, a comment line and an empty line are > > added, but it is ambiguous whether they were added after the existing > > empty line, or whether an empty line and the comment line are added > > *before* the existing empty line. And apparently xdiff picks a different > > option here than Python's difflib. > > > > Just noticed while reading the whole series again (hopefully for the > last time :)), do we need Thomas Rast's Sign-off here, as he is > credited as the author here? Hmm. I hoped that my commit message was enough to indicate that while he is the author, I assembled this. Maybe I should move him to the footer, as an Original-Authored-By:? Junio? Ciao, Dscho > > > Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> > > --- > > t/.gitattributes | 1 + > > t/t3206-range-diff.sh | 145 ++++++++++ > > t/t3206/history.export | 604 +++++++++++++++++++++++++++++++++++++++++ > > 3 files changed, 750 insertions(+) > > create mode 100755 t/t3206-range-diff.sh > > create mode 100644 t/t3206/history.export > > > > diff --git a/t/.gitattributes b/t/.gitattributes > > index 3bd959ae5..b17bf71b8 100644 > > --- a/t/.gitattributes > > +++ b/t/.gitattributes > > @@ -1,6 +1,7 @@ > > t[0-9][0-9][0-9][0-9]/* -whitespace > > /diff-lib/* eol=lf > > /t0110/url-* binary > > +/t3206/* eol=lf > > /t3900/*.txt eol=lf > > /t3901/*.txt eol=lf > > /t4034/*/* eol=lf > > diff --git a/t/t3206-range-diff.sh b/t/t3206-range-diff.sh > > new file mode 100755 > > index 000000000..2237c7f4a > > --- /dev/null > > +++ b/t/t3206-range-diff.sh > > @@ -0,0 +1,145 @@ > > +#!/bin/sh > > + > > +test_description='range-diff tests' > > + > > +. ./test-lib.sh > > + > > +# Note that because of the range-diff's heuristics, test_commit does more > > +# harm than good. We need some real history. > > + > > +test_expect_success 'setup' ' > > + git fast-import < "$TEST_DIRECTORY"/t3206/history.export > > +' > > + > > +test_expect_success 'simple A..B A..C (unmodified)' ' > > + git range-diff --no-color master..topic master..unmodified \ > > + >actual && > > + cat >expected <<-EOF && > > + 1: 4de457d = 1: 35b9b25 s/5/A/ > > + 2: fccce22 = 2: de345ab s/4/A/ > > + 3: 147e64e = 3: 9af6654 s/11/B/ > > + 4: a63e992 = 4: 2901f77 s/12/B/ > > + EOF > > + test_cmp expected actual > > +' > > + > > +test_expect_success 'simple B...C (unmodified)' ' > > + git range-diff --no-color topic...unmodified >actual && > > + # same "expected" as above > > + test_cmp expected actual > > +' > > + > > +test_expect_success 'simple A B C (unmodified)' ' > > + git range-diff --no-color master topic unmodified >actual && > > + # same "expected" as above > > + test_cmp expected actual > > +' > > + > > +test_expect_success 'trivial reordering' ' > > + git range-diff --no-color master topic reordered >actual && > > + cat >expected <<-EOF && > > + 1: 4de457d = 1: aca177a s/5/A/ > > + 3: 147e64e = 2: 14ad629 s/11/B/ > > + 4: a63e992 = 3: ee58208 s/12/B/ > > + 2: fccce22 = 4: 307b27a s/4/A/ > > + EOF > > + test_cmp expected actual > > +' > > + > > +test_expect_success 'removed a commit' ' > > + git range-diff --no-color master topic removed >actual && > > + cat >expected <<-EOF && > > + 1: 4de457d = 1: 7657159 s/5/A/ > > + 2: fccce22 < -: ------- s/4/A/ > > + 3: 147e64e = 2: 43d84d3 s/11/B/ > > + 4: a63e992 = 3: a740396 s/12/B/ > > + EOF > > + test_cmp expected actual > > +' > > + > > +test_expect_success 'added a commit' ' > > + git range-diff --no-color master topic added >actual && > > + cat >expected <<-EOF && > > + 1: 4de457d = 1: 2716022 s/5/A/ > > + 2: fccce22 = 2: b62accd s/4/A/ > > + -: ------- > 3: df46cfa s/6/A/ > > + 3: 147e64e = 4: 3e64548 s/11/B/ > > + 4: a63e992 = 5: 12b4063 s/12/B/ > > + EOF > > + test_cmp expected actual > > +' > > + > > +test_expect_success 'new base, A B C' ' > > + git range-diff --no-color master topic rebased >actual && > > + cat >expected <<-EOF && > > + 1: 4de457d = 1: cc9c443 s/5/A/ > > + 2: fccce22 = 2: c5d9641 s/4/A/ > > + 3: 147e64e = 3: 28cc2b6 s/11/B/ > > + 4: a63e992 = 4: 5628ab7 s/12/B/ > > + EOF > > + test_cmp expected actual > > +' > > + > > +test_expect_success 'new base, B...C' ' > > + # this syntax includes the commits from master! > > + git range-diff --no-color topic...rebased >actual && > > + cat >expected <<-EOF && > > + -: ------- > 1: a31b12e unrelated > > + 1: 4de457d = 2: cc9c443 s/5/A/ > > + 2: fccce22 = 3: c5d9641 s/4/A/ > > + 3: 147e64e = 4: 28cc2b6 s/11/B/ > > + 4: a63e992 = 5: 5628ab7 s/12/B/ > > + EOF > > + test_cmp expected actual > > +' > > + > > +test_expect_success 'changed commit' ' > > + git range-diff --no-color topic...changed >actual && > > + cat >expected <<-EOF && > > + 1: 4de457d = 1: a4b3333 s/5/A/ > > + 2: fccce22 = 2: f51d370 s/4/A/ > > + 3: 147e64e ! 3: 0559556 s/11/B/ > > + @@ -10,7 +10,7 @@ > > + 9 > > + 10 > > + -11 > > + -+B > > + ++BB > > + 12 > > + 13 > > + 14 > > + 4: a63e992 ! 4: d966c5c s/12/B/ > > + @@ -8,7 +8,7 @@ > > + @@ > > + 9 > > + 10 > > + - B > > + + BB > > + -12 > > + +B > > + 13 > > + EOF > > + test_cmp expected actual > > +' > > + > > +test_expect_success 'changed message' ' > > + git range-diff --no-color topic...changed-message >actual && > > + sed s/Z/\ /g >expected <<-EOF && > > + 1: 4de457d = 1: f686024 s/5/A/ > > + 2: fccce22 ! 2: 4ab067d s/4/A/ > > + @@ -2,6 +2,8 @@ > > + Z > > + Z s/4/A/ > > + Z > > + + Also a silly comment here! > > + + > > + Zdiff --git a/file b/file > > + Z--- a/file > > + Z+++ b/file > > + 3: 147e64e = 3: b9cb956 s/11/B/ > > + 4: a63e992 = 4: 8add5f1 s/12/B/ > > + EOF > > + test_cmp expected actual > > +' > > + > > +test_done > > diff --git a/t/t3206/history.export b/t/t3206/history.export > > new file mode 100644 > > index 000000000..b8ffff094 > > --- /dev/null > > +++ b/t/t3206/history.export > > @@ -0,0 +1,604 @@ > > +blob > > +mark :1 > > +data 51 > > +1 > > +2 > > +3 > > +4 > > +5 > > +6 > > +7 > > +8 > > +9 > > +10 > > +11 > > +12 > > +13 > > +14 > > +15 > > +16 > > +17 > > +18 > > +19 > > +20 > > + > > +reset refs/heads/removed > > +commit refs/heads/removed > > +mark :2 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374424921 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374484724 +0200 > > +data 8 > > +initial > > +M 100644 :1 file > > + > > +blob > > +mark :3 > > +data 51 > > +1 > > +2 > > +3 > > +4 > > +A > > +6 > > +7 > > +8 > > +9 > > +10 > > +11 > > +12 > > +13 > > +14 > > +15 > > +16 > > +17 > > +18 > > +19 > > +20 > > + > > +commit refs/heads/topic > > +mark :4 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485014 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485014 +0200 > > +data 7 > > +s/5/A/ > > +from :2 > > +M 100644 :3 file > > + > > +blob > > +mark :5 > > +data 51 > > +1 > > +2 > > +3 > > +A > > +A > > +6 > > +7 > > +8 > > +9 > > +10 > > +11 > > +12 > > +13 > > +14 > > +15 > > +16 > > +17 > > +18 > > +19 > > +20 > > + > > +commit refs/heads/topic > > +mark :6 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485024 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485024 +0200 > > +data 7 > > +s/4/A/ > > +from :4 > > +M 100644 :5 file > > + > > +blob > > +mark :7 > > +data 50 > > +1 > > +2 > > +3 > > +A > > +A > > +6 > > +7 > > +8 > > +9 > > +10 > > +B > > +12 > > +13 > > +14 > > +15 > > +16 > > +17 > > +18 > > +19 > > +20 > > + > > +commit refs/heads/topic > > +mark :8 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485036 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485036 +0200 > > +data 8 > > +s/11/B/ > > +from :6 > > +M 100644 :7 file > > + > > +blob > > +mark :9 > > +data 49 > > +1 > > +2 > > +3 > > +A > > +A > > +6 > > +7 > > +8 > > +9 > > +10 > > +B > > +B > > +13 > > +14 > > +15 > > +16 > > +17 > > +18 > > +19 > > +20 > > + > > +commit refs/heads/topic > > +mark :10 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485044 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485044 +0200 > > +data 8 > > +s/12/B/ > > +from :8 > > +M 100644 :9 file > > + > > +blob > > +mark :11 > > +data 10 > > +unrelated > > + > > +commit refs/heads/master > > +mark :12 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485127 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485127 +0200 > > +data 10 > > +unrelated > > +from :2 > > +M 100644 :11 otherfile > > + > > +commit refs/heads/rebased > > +mark :13 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485014 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485137 +0200 > > +data 7 > > +s/5/A/ > > +from :12 > > +M 100644 :3 file > > + > > +commit refs/heads/rebased > > +mark :14 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485024 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485138 +0200 > > +data 7 > > +s/4/A/ > > +from :13 > > +M 100644 :5 file > > + > > +commit refs/heads/rebased > > +mark :15 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485036 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485138 +0200 > > +data 8 > > +s/11/B/ > > +from :14 > > +M 100644 :7 file > > + > > +commit refs/heads/rebased > > +mark :16 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485044 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485138 +0200 > > +data 8 > > +s/12/B/ > > +from :15 > > +M 100644 :9 file > > + > > +commit refs/heads/added > > +mark :17 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485014 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485341 +0200 > > +data 7 > > +s/5/A/ > > +from :2 > > +M 100644 :3 file > > + > > +commit refs/heads/added > > +mark :18 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485024 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485341 +0200 > > +data 7 > > +s/4/A/ > > +from :17 > > +M 100644 :5 file > > + > > +blob > > +mark :19 > > +data 51 > > +1 > > +2 > > +3 > > +A > > +A > > +A > > +7 > > +8 > > +9 > > +10 > > +11 > > +12 > > +13 > > +14 > > +15 > > +16 > > +17 > > +18 > > +19 > > +20 > > + > > +commit refs/heads/added > > +mark :20 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485186 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485341 +0200 > > +data 7 > > +s/6/A/ > > +from :18 > > +M 100644 :19 file > > + > > +blob > > +mark :21 > > +data 50 > > +1 > > +2 > > +3 > > +A > > +A > > +A > > +7 > > +8 > > +9 > > +10 > > +B > > +12 > > +13 > > +14 > > +15 > > +16 > > +17 > > +18 > > +19 > > +20 > > + > > +commit refs/heads/added > > +mark :22 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485036 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485341 +0200 > > +data 8 > > +s/11/B/ > > +from :20 > > +M 100644 :21 file > > + > > +blob > > +mark :23 > > +data 49 > > +1 > > +2 > > +3 > > +A > > +A > > +A > > +7 > > +8 > > +9 > > +10 > > +B > > +B > > +13 > > +14 > > +15 > > +16 > > +17 > > +18 > > +19 > > +20 > > + > > +commit refs/heads/added > > +mark :24 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485044 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485341 +0200 > > +data 8 > > +s/12/B/ > > +from :22 > > +M 100644 :23 file > > + > > +commit refs/heads/reordered > > +mark :25 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485014 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485350 +0200 > > +data 7 > > +s/5/A/ > > +from :2 > > +M 100644 :3 file > > + > > +blob > > +mark :26 > > +data 50 > > +1 > > +2 > > +3 > > +4 > > +A > > +6 > > +7 > > +8 > > +9 > > +10 > > +B > > +12 > > +13 > > +14 > > +15 > > +16 > > +17 > > +18 > > +19 > > +20 > > + > > +commit refs/heads/reordered > > +mark :27 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485036 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485350 +0200 > > +data 8 > > +s/11/B/ > > +from :25 > > +M 100644 :26 file > > + > > +blob > > +mark :28 > > +data 49 > > +1 > > +2 > > +3 > > +4 > > +A > > +6 > > +7 > > +8 > > +9 > > +10 > > +B > > +B > > +13 > > +14 > > +15 > > +16 > > +17 > > +18 > > +19 > > +20 > > + > > +commit refs/heads/reordered > > +mark :29 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485044 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485350 +0200 > > +data 8 > > +s/12/B/ > > +from :27 > > +M 100644 :28 file > > + > > +commit refs/heads/reordered > > +mark :30 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485024 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485350 +0200 > > +data 7 > > +s/4/A/ > > +from :29 > > +M 100644 :9 file > > + > > +commit refs/heads/changed > > +mark :31 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485014 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485507 +0200 > > +data 7 > > +s/5/A/ > > +from :2 > > +M 100644 :3 file > > + > > +commit refs/heads/changed > > +mark :32 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485024 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485507 +0200 > > +data 7 > > +s/4/A/ > > +from :31 > > +M 100644 :5 file > > + > > +blob > > +mark :33 > > +data 51 > > +1 > > +2 > > +3 > > +A > > +A > > +6 > > +7 > > +8 > > +9 > > +10 > > +BB > > +12 > > +13 > > +14 > > +15 > > +16 > > +17 > > +18 > > +19 > > +20 > > + > > +commit refs/heads/changed > > +mark :34 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485036 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485507 +0200 > > +data 8 > > +s/11/B/ > > +from :32 > > +M 100644 :33 file > > + > > +blob > > +mark :35 > > +data 50 > > +1 > > +2 > > +3 > > +A > > +A > > +6 > > +7 > > +8 > > +9 > > +10 > > +BB > > +B > > +13 > > +14 > > +15 > > +16 > > +17 > > +18 > > +19 > > +20 > > + > > +commit refs/heads/changed > > +mark :36 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485044 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485507 +0200 > > +data 8 > > +s/12/B/ > > +from :34 > > +M 100644 :35 file > > + > > +commit refs/heads/changed-message > > +mark :37 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485014 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485530 +0200 > > +data 7 > > +s/5/A/ > > +from :2 > > +M 100644 :3 file > > + > > +commit refs/heads/changed-message > > +mark :38 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485024 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485530 +0200 > > +data 35 > > +s/4/A/ > > + > > +Also a silly comment here! > > +from :37 > > +M 100644 :5 file > > + > > +commit refs/heads/changed-message > > +mark :39 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485036 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485536 +0200 > > +data 8 > > +s/11/B/ > > +from :38 > > +M 100644 :7 file > > + > > +commit refs/heads/changed-message > > +mark :40 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485044 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485536 +0200 > > +data 8 > > +s/12/B/ > > +from :39 > > +M 100644 :9 file > > + > > +commit refs/heads/unmodified > > +mark :41 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485014 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485631 +0200 > > +data 7 > > +s/5/A/ > > +from :2 > > +M 100644 :3 file > > + > > +commit refs/heads/unmodified > > +mark :42 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485024 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485631 +0200 > > +data 7 > > +s/4/A/ > > +from :41 > > +M 100644 :5 file > > + > > +commit refs/heads/unmodified > > +mark :43 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485036 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485632 +0200 > > +data 8 > > +s/11/B/ > > +from :42 > > +M 100644 :7 file > > + > > +commit refs/heads/unmodified > > +mark :44 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485044 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374485632 +0200 > > +data 8 > > +s/12/B/ > > +from :43 > > +M 100644 :9 file > > + > > +commit refs/heads/removed > > +mark :45 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485014 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374486061 +0200 > > +data 7 > > +s/5/A/ > > +from :2 > > +M 100644 :3 file > > + > > +commit refs/heads/removed > > +mark :46 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485036 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374486061 +0200 > > +data 8 > > +s/11/B/ > > +from :45 > > +M 100644 :26 file > > + > > +commit refs/heads/removed > > +mark :47 > > +author Thomas Rast <trast@xxxxxxxxxxx> 1374485044 +0200 > > +committer Thomas Rast <trast@xxxxxxxxxxx> 1374486061 +0200 > > +data 8 > > +s/12/B/ > > +from :46 > > +M 100644 :28 file > > + > > +reset refs/heads/removed > > +from :47 > > + > > -- > > gitgitgadget > > > >