# HG changeset patch # User Stefano Tortarolo # Date 1301225660 -7200 # Node ID 46c3043253fbd4f54bed61c4cdda2a2c198e622f # Parent f6e5035dc81aee894099aecea9473191992ad247 rebase: don't mark file as removed if missing in parent's manifest (issue2725) diff -r f6e5035dc81a -r 46c3043253fb hgext/rebase.py --- a/hgext/rebase.py Sun Mar 27 12:22:07 2011 +0200 +++ b/hgext/rebase.py Sun Mar 27 13:34:20 2011 +0200 @@ -277,7 +277,7 @@ if k in m1: if v in m1 or v in m2: repo.dirstate.copy(v, k) - if v in m2 and v not in m1: + if v in m2 and v not in m1 and k in m2: repo.dirstate.remove(v) def concludenode(repo, rev, p1, p2, commitmsg=None, extrafn=None): diff -r f6e5035dc81a -r 46c3043253fb tests/test-rebase-rename.t --- a/tests/test-rebase-rename.t Sun Mar 27 12:22:07 2011 +0200 +++ b/tests/test-rebase-rename.t Sun Mar 27 13:34:20 2011 +0200 @@ -119,3 +119,52 @@ copy from a copy to a-copied + $ cd .. + + +Test rebase across repeating renames: + + $ hg init repo + + $ cd repo + + $ echo testing > file1.txt + $ hg add file1.txt + $ hg ci -m "Adding file1" + + $ hg rename file1.txt file2.txt + $ hg ci -m "Rename file1 to file2" + + $ echo Unrelated change > unrelated.txt + $ hg add unrelated.txt + $ hg ci -m "Unrelated change" + + $ hg rename file2.txt file1.txt + $ hg ci -m "Rename file2 back to file1" + + $ hg update -r -2 + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + + $ echo Another unrelated change >> unrelated.txt + $ hg ci -m "Another unrelated change" + created new head + + $ hg tglog + @ 4: 'Another unrelated change' + | + | o 3: 'Rename file2 back to file1' + |/ + o 2: 'Unrelated change' + | + o 1: 'Rename file1 to file2' + | + o 0: 'Adding file1' + + + $ hg rebase -s 4 -d 3 + saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-backup.hg (glob) + + $ hg diff --stat -c . + unrelated.txt | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) +