comparison mercurial/merge.py @ 16284:2b0a406d3043

merge: fix unknown file merge detection for case-folding systems This was triggering some test failures on Mac.
author Matt Mackall <mpm@selenic.com>
date Mon, 26 Mar 2012 16:41:54 -0500
parents 7b9bf72430ba
children cbf2ea2f5ca1
comparison
equal deleted inserted replaced
16279:531e69ff348f 16284:2b0a406d3043
82 return r 82 return r
83 83
84 def _checkunknownfile(repo, wctx, mctx, f): 84 def _checkunknownfile(repo, wctx, mctx, f):
85 return (not repo.dirstate._ignore(f) 85 return (not repo.dirstate._ignore(f)
86 and os.path.exists(repo.wjoin(f)) 86 and os.path.exists(repo.wjoin(f))
87 and repo.dirstate.normalize(f) not in repo.dirstate
87 and mctx[f].cmp(wctx[f])) 88 and mctx[f].cmp(wctx[f]))
88 89
89 def _checkunknown(repo, wctx, mctx): 90 def _checkunknown(repo, wctx, mctx):
90 "check for collisions between unknown files and files in mctx" 91 "check for collisions between unknown files and files in mctx"
91 92
543 hint=_("use 'hg update' " 544 hint=_("use 'hg update' "
544 "or check 'hg heads'")) 545 "or check 'hg heads'"))
545 if not force and (wc.files() or wc.deleted()): 546 if not force and (wc.files() or wc.deleted()):
546 raise util.Abort(_("outstanding uncommitted changes"), 547 raise util.Abort(_("outstanding uncommitted changes"),
547 hint=_("use 'hg status' to list changes")) 548 hint=_("use 'hg status' to list changes"))
548 if not force:
549 _checkunknown(repo, wc, p2)
550 for s in wc.substate: 549 for s in wc.substate:
551 if wc.sub(s).dirty(): 550 if wc.sub(s).dirty():
552 raise util.Abort(_("outstanding uncommitted changes in " 551 raise util.Abort(_("outstanding uncommitted changes in "
553 "subrepository '%s'") % s) 552 "subrepository '%s'") % s)
554 553
568 ### calculate phase 567 ### calculate phase
569 action = [] 568 action = []
570 folding = not util.checkcase(repo.path) 569 folding = not util.checkcase(repo.path)
571 if folding: 570 if folding:
572 _checkcollision(p2, branchmerge and p1) 571 _checkcollision(p2, branchmerge and p1)
572 if not force:
573 _checkunknown(repo, wc, p2)
573 action += _forgetremoved(wc, p2, branchmerge) 574 action += _forgetremoved(wc, p2, branchmerge)
574 action += manifestmerge(repo, wc, p2, pa, overwrite, partial) 575 action += manifestmerge(repo, wc, p2, pa, overwrite, partial)
575 576
576 ### apply phase 577 ### apply phase
577 if not branchmerge: # just jump to the new rev 578 if not branchmerge: # just jump to the new rev