diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -609,7 +609,7 @@ def update(repo, node, branchmerge, forc raise util.Abort(_("update spans branches, use 'hg merge' " "or 'hg update -C' to lose changes")) if branchmerge and not forcemerge: - if wc.files(): + if wc.files() or wc.deleted(): raise util.Abort(_("outstanding uncommitted changes")) ### calculate phase diff --git a/tests/test-merge-force b/tests/test-merge-force --- a/tests/test-merge-force +++ b/tests/test-merge-force @@ -17,7 +17,8 @@ hg up -qC 1 rm a echo '% local deleted a file, remote removed' -hg -v merge +hg merge # should fail, since there are deleted files +hg -v merge --force echo % should show a as removed hg st diff --git a/tests/test-merge-force.out b/tests/test-merge-force.out --- a/tests/test-merge-force.out +++ b/tests/test-merge-force.out @@ -1,4 +1,5 @@ % local deleted a file, remote removed +abort: outstanding uncommitted changes resolving manifests removing a 0 files updated, 0 files merged, 1 files removed, 0 files unresolved