comparison hgext/transplant.py @ 48116:5ced12cfa41b

errors: raise InputError on bad revset to revrange() iff provided by the user Most callers of `scmutil.revrange()` pass in a revset provided by the user. If there are problems resolving that, it should result in an `InputError` and exit code 10 (when using detailed exit codes). However, there are also some callers that pass in revsets not provided by the user. `InputError` is not appropriate in those cases. This patch therefore introduces a wrapper around `scmutil.revrange()` that simply converts the exception type. I put it in `logcmdutil.py` since that seems to be the lowest-level module in the (poorly defined) UI layer. Differential Revision: https://phab.mercurial-scm.org/D11560
author Martin von Zweigbergk <martinvonz@google.com>
date Tue, 28 Sep 2021 08:47:11 -0700
parents d55b71393907
children 6000f5b25c9b
comparison
equal deleted inserted replaced
48115:b067d22dc6ad 48116:5ced12cfa41b
35 merge, 35 merge,
36 patch, 36 patch,
37 pycompat, 37 pycompat,
38 registrar, 38 registrar,
39 revset, 39 revset,
40 scmutil,
41 smartset, 40 smartset,
42 state as statemod, 41 state as statemod,
43 util, 42 util,
44 vfs as vfsmod, 43 vfs as vfsmod,
45 ) 44 )
843 842
844 tf = tp.transplantfilter(repo, source, p1) 843 tf = tp.transplantfilter(repo, source, p1)
845 if opts.get(b'prune'): 844 if opts.get(b'prune'):
846 prune = { 845 prune = {
847 source[r].node() 846 source[r].node()
848 for r in scmutil.revrange(source, opts.get(b'prune')) 847 for r in logcmdutil.revrange(source, opts.get(b'prune'))
849 } 848 }
850 matchfn = lambda x: tf(x) and x not in prune 849 matchfn = lambda x: tf(x) and x not in prune
851 else: 850 else:
852 matchfn = tf 851 matchfn = tf
853 merges = pycompat.maplist(source.lookup, opts.get(b'merge', ())) 852 merges = pycompat.maplist(source.lookup, opts.get(b'merge', ()))
854 revmap = {} 853 revmap = {}
855 if revs: 854 if revs:
856 for r in scmutil.revrange(source, revs): 855 for r in logcmdutil.revrange(source, revs):
857 revmap[int(r)] = source[r].node() 856 revmap[int(r)] = source[r].node()
858 elif opts.get(b'all') or not merges: 857 elif opts.get(b'all') or not merges:
859 if source != repo: 858 if source != repo:
860 alltransplants = incwalk(source, csets, match=matchfn) 859 alltransplants = incwalk(source, csets, match=matchfn)
861 else: 860 else: