diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -384,7 +384,7 @@ def manifestmerge(repo, wctx, p2, pa, br return actions def actionkey(a): - return a[1] == "r" and -1 or 0, a + return a[1] in "rf" and -1 or 0, a def getremove(repo, mctx, overwrite, args): """apply usually-non-interactive updates to the working directory diff --git a/tests/test-add.t b/tests/test-add.t --- a/tests/test-add.t +++ b/tests/test-add.t @@ -136,5 +136,23 @@ Issue683: peculiarity with hg revert of M a A c ? a.orig + $ hg up -C + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + +forget and get should have the right order: added but missing dir should be +forgotten before file with same name is added + + $ echo file d > d + $ hg add d + $ hg ci -md + $ hg rm d + $ mkdir d + $ echo a > d/a + $ hg add d/a + $ rm -r d + $ hg up -C + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cat d + file d $ cd ..