# HG changeset patch # User Matt Mackall # Date 1328564204 21600 # Node ID e1d8218d733bb318605308fa8c6f261f49d0c163 # Parent 6c1daae0ae7bd47f325c71d419e71a99a95c9327# Parent 2e8f4b82c551014a5895b3dfc5858f2341bd7f41 merge with stable diff -r 6c1daae0ae7b -r e1d8218d733b mercurial/mdiff.py --- a/mercurial/mdiff.py Mon Feb 06 15:22:43 2012 -0600 +++ b/mercurial/mdiff.py Mon Feb 06 15:36:44 2012 -0600 @@ -268,14 +268,23 @@ # them into diff output. # hunk = None + ignoredlines = 0 for s, stype in allblocks(t1, t2, opts, l1, l2): + a1, a2, b1, b2 = s if stype != '!': + if stype == '~': + # The diff context lines are based on t1 content. When + # blank lines are ignored, the new lines offsets must + # be adjusted as if equivalent blocks ('~') had the + # same sizes on both sides. + ignoredlines += (b2 - b1) - (a2 - a1) continue delta = [] - a1, a2, b1, b2 = s old = l1[a1:a2] new = l2[b1:b2] + b1 -= ignoredlines + b2 -= ignoredlines astart = contextstart(a1) bstart = contextstart(b1) prev = None diff -r 6c1daae0ae7b -r e1d8218d733b tests/test-diff-ignore-whitespace.t --- a/tests/test-diff-ignore-whitespace.t Mon Feb 06 15:22:43 2012 -0600 +++ b/tests/test-diff-ignore-whitespace.t Mon Feb 06 15:36:44 2012 -0600 @@ -455,3 +455,46 @@ +hello +world goodbye world + +Test hunk offsets adjustments with --ignore-blank-lines + + $ hg revert -aC + reverting foo + $ printf '\nb\nx\nd\n' > a + $ printf 'b\ny\nd\n' > b + $ hg add a b + $ hg ci -m add + $ hg cat -r . a > b + $ hg cat -r . b > a + $ hg diff -B --nodates a > ../diffa + $ cat ../diffa + diff -r 0e66aa54f318 a + --- a/a + +++ b/a + @@ -1,4 +1,4 @@ + + b + -x + +y + d + $ hg diff -B --nodates b > ../diffb + $ cat ../diffb + diff -r 0e66aa54f318 b + --- a/b + +++ b/b + @@ -1,3 +1,3 @@ + b + -y + +x + d + $ hg revert -aC + reverting a + reverting b + $ hg import --no-commit ../diffa + applying ../diffa + $ hg revert -aC + reverting a + $ hg import --no-commit ../diffb + applying ../diffb + $ hg revert -aC + reverting b diff -r 6c1daae0ae7b -r e1d8218d733b tests/test-mq-qdiff.t --- a/tests/test-mq-qdiff.t Mon Feb 06 15:22:43 2012 -0600 +++ b/tests/test-mq-qdiff.t Mon Feb 06 15:36:44 2012 -0600 @@ -98,7 +98,7 @@ diff -r b0c220e1cf43 lines --- a/lines +++ b/lines - @@ -4,4 +6,4 @@ + @@ -4,4 +4,4 @@ 4 -hello world -goodbye world