diff --git a/mercurial/hg.py b/mercurial/hg.py --- a/mercurial/hg.py +++ b/mercurial/hg.py @@ -1076,7 +1076,11 @@ class localrepository: remove.append(f) # other deleted it else: if n == m1.get(f, nullid): # same as parent - self.ui.debug("local created %s, keeping\n" % f) + if p2 == pa: # going backwards? + self.ui.debug("remote deleted %s\n" % f) + remove.append(f) + else: + self.ui.debug("local created %s, keeping\n" % f) else: self.ui.debug("working dir created %s, keeping\n" % f) diff --git a/tests/test-backwards-remove b/tests/test-backwards-remove new file mode 100755 --- /dev/null +++ b/tests/test-backwards-remove @@ -0,0 +1,12 @@ +#!/bin/sh -x +hg init +echo This is file a1 > a +hg add a +hg commit -t "commit #0" -d "0 0" -u user +ls +echo This is file b1 > b +hg add b +hg commit -t "commit #1" -d "0 0" -u user +hg co 0 +# B should disappear +ls diff --git a/tests/test-backwards-remove.out b/tests/test-backwards-remove.out new file mode 100644 --- /dev/null +++ b/tests/test-backwards-remove.out @@ -0,0 +1,12 @@ ++ hg init ++ echo This is file a1 ++ hg add a ++ hg commit -t 'commit #0' -d '0 0' -u user ++ ls +a ++ echo This is file b1 ++ hg add b ++ hg commit -t 'commit #1' -d '0 0' -u user ++ hg co 0 ++ ls +a