diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -1108,10 +1108,12 @@ class localrepository: self.ui.debug("other deleted %s\n" % f) remove.append(f) # other deleted it else: - # file is not in ancestor or target - if n == m1.get(f, nullid) or force: # same as parent - self.ui.debug("remote deleted %s\n" % f) - remove.append(f) + if n == m1.get(f, nullid): # same as parent + 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)