comparison mercurial/merge.py @ 27740:da5634e1b8a3

merge: factor out code to get checkunknown config We're going to reuse this code shortly.
author Siddharth Agarwal <sid0@fb.com>
date Tue, 12 Jan 2016 18:12:35 -0800
parents 7b5c8c8a2f8c
children 3951f132958f
comparison
equal deleted inserted replaced
27739:d6d3cf5fda6f 27740:da5634e1b8a3
555 """queues a file to be marked modified in the dirstate 555 """queues a file to be marked modified in the dirstate
556 556
557 Meant for use by custom merge drivers.""" 557 Meant for use by custom merge drivers."""
558 self._results[f] = 0, 'g' 558 self._results[f] = 0, 'g'
559 559
560 def _getcheckunknownconfig(repo, section, name):
561 config = repo.ui.config(section, name, default='abort')
562 valid = ['abort', 'ignore', 'warn']
563 if config not in valid:
564 validstr = ', '.join(["'" + v + "'" for v in valid])
565 raise error.ConfigError(_("%s.%s not valid "
566 "('%s' is none of %s)")
567 % (section, name, config, validstr))
568 return config
569
560 def _checkunknownfile(repo, wctx, mctx, f, f2=None): 570 def _checkunknownfile(repo, wctx, mctx, f, f2=None):
561 if f2 is None: 571 if f2 is None:
562 f2 = f 572 f2 = f
563 return (repo.wvfs.isfileorlink(f) 573 return (repo.wvfs.isfileorlink(f)
564 and repo.wvfs.audit.check(f) 574 and repo.wvfs.audit.check(f)
571 files. For some actions, the result is to abort; for others, it is to 581 files. For some actions, the result is to abort; for others, it is to
572 choose a different action. 582 choose a different action.
573 """ 583 """
574 conflicts = set() 584 conflicts = set()
575 if not force: 585 if not force:
576 config = repo.ui.config('merge', 'checkunknown', default='abort') 586 config = _getcheckunknownconfig(repo, 'merge', 'checkunknown')
577 valid = ['abort', 'ignore', 'warn']
578 if config not in valid:
579 validstr = ', '.join(["'" + v + "'" for v in valid])
580 raise error.ConfigError(_("merge.checkunknown not valid "
581 "('%s' is none of %s)")
582 % (config, validstr))
583
584 for f, (m, args, msg) in actions.iteritems(): 587 for f, (m, args, msg) in actions.iteritems():
585 if m in ('c', 'dc'): 588 if m in ('c', 'dc'):
586 if _checkunknownfile(repo, wctx, mctx, f): 589 if _checkunknownfile(repo, wctx, mctx, f):
587 conflicts.add(f) 590 conflicts.add(f)
588 elif m == 'dg': 591 elif m == 'dg':