# HG changeset patch # User mpm@selenic.com # Date 1118989975 28800 # Node ID 4862a134e2c2516f09324d12a0036c073b190ada # Parent 37249c522770efa58ca95871c0362ab871b0c1e9 hg merge: fix time asymmetry bug with deleting files on update to past -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 hg merge: fix time asymmetry bug with deleting files on update to past manifest hash: 41feb7bf9b56e071a538a0918224898acb2bd31c -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCsm6XywK+sNU5EO8RAncbAKCwn/W4cr6civp4Zt79JFH6um0/lQCdFCh8 F7ZOQ+S/PL3HL4iE6avOBDc= =kHPm -----END PGP SIGNATURE----- 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