diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -577,7 +577,8 @@ def update(repo, node, branchmerge, forc folding = not util.checkcase(repo.path) if folding: # collision check is not needed for clean update - if not branchmerge and force: + if (not branchmerge and + (force or not wc.dirty(missing=True, branch=False))): _checkcollision(p2, None) else: _checkcollision(p2, wc) diff --git a/tests/test-casecollision-merge.t b/tests/test-casecollision-merge.t --- a/tests/test-casecollision-merge.t +++ b/tests/test-casecollision-merge.t @@ -143,14 +143,14 @@ test for rename awareness of case-foldin $ hg commit -m '#2' $ hg update 0 - abort: case-folding collision between a and A - [255] + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg parents --template '{rev}\n' - 2 + 0 $ hg status -A - C A + C a $ cat A - A + a + $ hg up -qC 2 $ hg update --check 0 1 files updated, 0 files merged, 1 files removed, 0 files unresolved