# HG changeset patch # User mpm@selenic.com # Date 1118338881 28800 # Node ID a3d83bf86755f201e8eeeb0653260ff8b872bca8 # Parent 38919e1c254dd1aaa3233e31fd92a4b7411cf3b1 hg update: fix clobbering files when going backwards -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 hg update: fix clobbering files when going backwards spotted by Andrew Thompson manifest hash: 0cfc2d189a395fb8761391d9918864034aa7a9b8 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCqH9BywK+sNU5EO8RAoHrAJwN9Y2Jrvbdp/seTkGl6D/g1uxK0wCglZWz jQ6F3A6ikzTXwhEq+KsR8Qw= =9IPU -----END PGP SIGNATURE----- diff --git a/mercurial/hg.py b/mercurial/hg.py --- a/mercurial/hg.py +++ b/mercurial/hg.py @@ -908,8 +908,10 @@ class localrepository: if f in m2: s = 0 + # are files different? if n != m2[f]: a = ma.get(f, nullid) + # are both different from the ancestor? if n != a and m2[f] != a: self.ui.debug(" %s versions differ, resolve\n" % f) merge[f] = (m1.get(f, nullid), m2[f]) @@ -919,7 +921,8 @@ class localrepository: mode = ((a^b) | (a^c)) ^ a merge[f] = (m1.get(f, nullid), m2[f], mode) s = 1 - elif m2[f] != a: + # is this an unmodified file or are we clobbering? + elif mw[f] == m1[f] or force: self.ui.debug(" remote %s is newer, get\n" % f) get[f] = m2[f] s = 1