mercurial/commands.py
changeset 38793 6c8e3c847977
parent 38783 e7aa113b14f7
child 38822 f8732e33bcbc
equal deleted inserted replaced
38792:afb442f58cbf 38793:6c8e3c847977
    33     discovery,
    33     discovery,
    34     encoding,
    34     encoding,
    35     error,
    35     error,
    36     exchange,
    36     exchange,
    37     extensions,
    37     extensions,
       
    38     filemerge,
    38     formatter,
    39     formatter,
    39     graphmod,
    40     graphmod,
    40     hbisect,
    41     hbisect,
    41     help,
    42     help,
    42     hg,
    43     hg,
  4592         ret = 0
  4593         ret = 0
  4593         didwork = False
  4594         didwork = False
  4594         runconclude = False
  4595         runconclude = False
  4595 
  4596 
  4596         tocomplete = []
  4597         tocomplete = []
       
  4598         hasconflictmarkers = []
       
  4599         if mark:
       
  4600             markcheck = ui.config('experimental', 'resolve.mark-check')
  4597         for f in ms:
  4601         for f in ms:
  4598             if not m(f):
  4602             if not m(f):
  4599                 continue
  4603                 continue
  4600 
  4604 
  4601             didwork = True
  4605             didwork = True
  4627                     ui.warn(_('%s: path conflict must be resolved manually\n')
  4631                     ui.warn(_('%s: path conflict must be resolved manually\n')
  4628                             % f)
  4632                             % f)
  4629                 continue
  4633                 continue
  4630 
  4634 
  4631             if mark:
  4635             if mark:
       
  4636                 if markcheck:
       
  4637                     with repo.wvfs(f) as fobj:
       
  4638                         fdata = fobj.read()
       
  4639                     if filemerge.hasconflictmarkers(fdata) and \
       
  4640                         ms[f] != mergemod.MERGE_RECORD_RESOLVED:
       
  4641                         hasconflictmarkers.append(f)
  4632                 ms.mark(f, mergemod.MERGE_RECORD_RESOLVED)
  4642                 ms.mark(f, mergemod.MERGE_RECORD_RESOLVED)
  4633             elif unmark:
  4643             elif unmark:
  4634                 ms.mark(f, mergemod.MERGE_RECORD_UNRESOLVED)
  4644                 ms.mark(f, mergemod.MERGE_RECORD_UNRESOLVED)
  4635             else:
  4645             else:
  4636                 # backup pre-resolve (merge uses .orig for its own purposes)
  4646                 # backup pre-resolve (merge uses .orig for its own purposes)
  4660                         util.rename(a + ".resolve",
  4670                         util.rename(a + ".resolve",
  4661                                     scmutil.origpath(ui, repo, a))
  4671                                     scmutil.origpath(ui, repo, a))
  4662                     except OSError as inst:
  4672                     except OSError as inst:
  4663                         if inst.errno != errno.ENOENT:
  4673                         if inst.errno != errno.ENOENT:
  4664                             raise
  4674                             raise
       
  4675 
       
  4676         if hasconflictmarkers:
       
  4677             ui.warn(_('warning: the following files still have conflict '
       
  4678                       'markers:\n  ') + '\n  '.join(hasconflictmarkers) + '\n')
       
  4679             if markcheck == 'abort' and not all:
       
  4680                 raise error.Abort(_('conflict markers detected'),
       
  4681                                   hint=_('use --all to mark anyway'))
  4665 
  4682 
  4666         for f in tocomplete:
  4683         for f in tocomplete:
  4667             try:
  4684             try:
  4668                 # resolve file
  4685                 # resolve file
  4669                 overrides = {('ui', 'forcemerge'): opts.get('tool', '')}
  4686                 overrides = {('ui', 'forcemerge'): opts.get('tool', '')}