mercurial/merge.py
changeset 27137 25e4b2f000c5
parent 27132 baa7571f40c5
child 27267 d6859d86a5d5
equal deleted inserted replaced
27136:29b08ca680b0 27137:25e4b2f000c5
   995     ms = mergestate.clean(repo, wctx.p1().node(), mctx.node())
   995     ms = mergestate.clean(repo, wctx.p1().node(), mctx.node())
   996     moves = []
   996     moves = []
   997     for m, l in actions.items():
   997     for m, l in actions.items():
   998         l.sort()
   998         l.sort()
   999 
   999 
  1000     # prescan for merges
  1000     # 'cd' and 'dc' actions are treated like other merge conflicts
  1001     for f, args, msg in actions['m']:
  1001     mergeactions = sorted(actions['cd'])
       
  1002     mergeactions.extend(sorted(actions['dc']))
       
  1003     mergeactions.extend(actions['m'])
       
  1004     for f, args, msg in mergeactions:
  1002         f1, f2, fa, move, anc = args
  1005         f1, f2, fa, move, anc = args
  1003         if f == '.hgsubstate': # merged internally
  1006         if f == '.hgsubstate': # merged internally
  1004             continue
  1007             continue
  1005         if f1 is None:
  1008         if f1 is None:
  1006             fcl = filemerge.absentfilectx(wctx, fa)
  1009             fcl = filemerge.absentfilectx(wctx, fa)
  1109         flags, = args
  1112         flags, = args
  1110         audit(f)
  1113         audit(f)
  1111         util.setflags(repo.wjoin(f), 'l' in flags, 'x' in flags)
  1114         util.setflags(repo.wjoin(f), 'l' in flags, 'x' in flags)
  1112         updated += 1
  1115         updated += 1
  1113 
  1116 
  1114     mergeactions = actions['m']
       
  1115     # the ordering is important here -- ms.mergedriver will raise if the merge
  1117     # the ordering is important here -- ms.mergedriver will raise if the merge
  1116     # driver has changed, and we want to be able to bypass it when overwrite is
  1118     # driver has changed, and we want to be able to bypass it when overwrite is
  1117     # True
  1119     # True
  1118     usemergedriver = not overwrite and mergeactions and ms.mergedriver
  1120     usemergedriver = not overwrite and mergeactions and ms.mergedriver
  1119 
  1121 
  1417                 (force or not wc.dirty(missing=True, branch=False))):
  1419                 (force or not wc.dirty(missing=True, branch=False))):
  1418                 _checkcollision(repo, p2.manifest(), None)
  1420                 _checkcollision(repo, p2.manifest(), None)
  1419             else:
  1421             else:
  1420                 _checkcollision(repo, wc.manifest(), actions)
  1422                 _checkcollision(repo, wc.manifest(), actions)
  1421 
  1423 
  1422         # Prompt and create actions. TODO: Move this towards resolve phase.
  1424         # Prompt and create actions. Most of this is in the resolve phase
       
  1425         # already, but we can't handle .hgsubstate in filemerge or
       
  1426         # subrepo.submerge yet so we have to keep prompting for it.
  1423         for f, args, msg in sorted(actions['cd']):
  1427         for f, args, msg in sorted(actions['cd']):
       
  1428             if f != '.hgsubstate':
       
  1429                 continue
  1424             if repo.ui.promptchoice(
  1430             if repo.ui.promptchoice(
  1425                 _("local changed %s which remote deleted\n"
  1431                 _("local changed %s which remote deleted\n"
  1426                   "use (c)hanged version or (d)elete?"
  1432                   "use (c)hanged version or (d)elete?"
  1427                   "$$ &Changed $$ &Delete") % f, 0):
  1433                   "$$ &Changed $$ &Delete") % f, 0):
  1428                 actions['r'].append((f, None, "prompt delete"))
  1434                 actions['r'].append((f, None, "prompt delete"))
  1430                 actions['am'].append((f, None, "prompt keep"))
  1436                 actions['am'].append((f, None, "prompt keep"))
  1431             else:
  1437             else:
  1432                 actions['a'].append((f, None, "prompt keep"))
  1438                 actions['a'].append((f, None, "prompt keep"))
  1433 
  1439 
  1434         for f, args, msg in sorted(actions['dc']):
  1440         for f, args, msg in sorted(actions['dc']):
       
  1441             if f != '.hgsubstate':
       
  1442                 continue
  1435             f1, f2, fa, move, anc = args
  1443             f1, f2, fa, move, anc = args
  1436             flags = p2[f2].flags()
  1444             flags = p2[f2].flags()
  1437             if repo.ui.promptchoice(
  1445             if repo.ui.promptchoice(
  1438                 _("remote changed %s which local deleted\n"
  1446                 _("remote changed %s which local deleted\n"
  1439                   "use (c)hanged version or leave (d)eleted?"
  1447                   "use (c)hanged version or leave (d)eleted?"