Mercurial > hg
comparison mercurial/commands.py @ 48118:5105a9975407
errors: raise InputError from revsingle() iff revset provided by the user
Same reasoning as for `revrange()` in an earlier patch.
Differential Revision: https://phab.mercurial-scm.org/D11562
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 28 Sep 2021 15:11:22 -0700 |
parents | b74e128676d4 |
children | 607e9322fc89 |
comparison
equal
deleted
inserted
replaced
48117:b74e128676d4 | 48118:5105a9975407 |
---|---|
443 raise error.InputError(_(b'at least one of -n/-c is required for -l')) | 443 raise error.InputError(_(b'at least one of -n/-c is required for -l')) |
444 | 444 |
445 rev = opts.get(b'rev') | 445 rev = opts.get(b'rev') |
446 if rev: | 446 if rev: |
447 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') | 447 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') |
448 ctx = scmutil.revsingle(repo, rev) | 448 ctx = logcmdutil.revsingle(repo, rev) |
449 | 449 |
450 ui.pager(b'annotate') | 450 ui.pager(b'annotate') |
451 rootfm = ui.formatter(b'annotate', opts) | 451 rootfm = ui.formatter(b'annotate', opts) |
452 if ui.debugflag: | 452 if ui.debugflag: |
453 shorthex = pycompat.identity | 453 shorthex = pycompat.identity |
647 | 647 |
648 opts = pycompat.byteskwargs(opts) | 648 opts = pycompat.byteskwargs(opts) |
649 rev = opts.get(b'rev') | 649 rev = opts.get(b'rev') |
650 if rev: | 650 if rev: |
651 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') | 651 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') |
652 ctx = scmutil.revsingle(repo, rev) | 652 ctx = logcmdutil.revsingle(repo, rev) |
653 if not ctx: | 653 if not ctx: |
654 raise error.InputError( | 654 raise error.InputError( |
655 _(b'no working directory: please specify a revision') | 655 _(b'no working directory: please specify a revision') |
656 ) | 656 ) |
657 node = ctx.node() | 657 node = ctx.node() |
789 if date: | 789 if date: |
790 opts[b'date'] = dateutil.parsedate(date) | 790 opts[b'date'] = dateutil.parsedate(date) |
791 | 791 |
792 cmdutil.checkunfinished(repo) | 792 cmdutil.checkunfinished(repo) |
793 cmdutil.bailifchanged(repo) | 793 cmdutil.bailifchanged(repo) |
794 ctx = scmutil.revsingle(repo, rev) | 794 ctx = logcmdutil.revsingle(repo, rev) |
795 node = ctx.node() | 795 node = ctx.node() |
796 | 796 |
797 op1, op2 = repo.dirstate.parents() | 797 op1, op2 = repo.dirstate.parents() |
798 if not repo.changelog.isancestor(node, op1): | 798 if not repo.changelog.isancestor(node, op1): |
799 raise error.InputError( | 799 raise error.InputError( |
1759 """ | 1759 """ |
1760 opts = pycompat.byteskwargs(opts) | 1760 opts = pycompat.byteskwargs(opts) |
1761 rev = opts.get(b'rev') | 1761 rev = opts.get(b'rev') |
1762 if rev: | 1762 if rev: |
1763 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') | 1763 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') |
1764 ctx = scmutil.revsingle(repo, rev) | 1764 ctx = logcmdutil.revsingle(repo, rev) |
1765 m = scmutil.match(ctx, (file1,) + pats, opts) | 1765 m = scmutil.match(ctx, (file1,) + pats, opts) |
1766 fntemplate = opts.pop(b'output', b'') | 1766 fntemplate = opts.pop(b'output', b'') |
1767 if cmdutil.isstdiofilename(fntemplate): | 1767 if cmdutil.isstdiofilename(fntemplate): |
1768 fntemplate = b'' | 1768 fntemplate = b'' |
1769 | 1769 |
2598 | 2598 |
2599 cmdutil.check_incompatible_arguments(opts, b'from', [b'rev', b'change']) | 2599 cmdutil.check_incompatible_arguments(opts, b'from', [b'rev', b'change']) |
2600 cmdutil.check_incompatible_arguments(opts, b'to', [b'rev', b'change']) | 2600 cmdutil.check_incompatible_arguments(opts, b'to', [b'rev', b'change']) |
2601 if change: | 2601 if change: |
2602 repo = scmutil.unhidehashlikerevs(repo, [change], b'nowarn') | 2602 repo = scmutil.unhidehashlikerevs(repo, [change], b'nowarn') |
2603 ctx2 = scmutil.revsingle(repo, change, None) | 2603 ctx2 = logcmdutil.revsingle(repo, change, None) |
2604 ctx1 = logcmdutil.diff_parent(ctx2) | 2604 ctx1 = logcmdutil.diff_parent(ctx2) |
2605 elif from_rev or to_rev: | 2605 elif from_rev or to_rev: |
2606 repo = scmutil.unhidehashlikerevs( | 2606 repo = scmutil.unhidehashlikerevs( |
2607 repo, [from_rev] + [to_rev], b'nowarn' | 2607 repo, [from_rev] + [to_rev], b'nowarn' |
2608 ) | 2608 ) |
2609 ctx1 = scmutil.revsingle(repo, from_rev, None) | 2609 ctx1 = logcmdutil.revsingle(repo, from_rev, None) |
2610 ctx2 = scmutil.revsingle(repo, to_rev, None) | 2610 ctx2 = logcmdutil.revsingle(repo, to_rev, None) |
2611 else: | 2611 else: |
2612 repo = scmutil.unhidehashlikerevs(repo, revs, b'nowarn') | 2612 repo = scmutil.unhidehashlikerevs(repo, revs, b'nowarn') |
2613 ctx1, ctx2 = logcmdutil.revpair(repo, revs) | 2613 ctx1, ctx2 = logcmdutil.revpair(repo, revs) |
2614 | 2614 |
2615 if reverse: | 2615 if reverse: |
2862 | 2862 |
2863 opts = pycompat.byteskwargs(opts) | 2863 opts = pycompat.byteskwargs(opts) |
2864 rev = opts.get(b'rev') | 2864 rev = opts.get(b'rev') |
2865 if rev: | 2865 if rev: |
2866 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') | 2866 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') |
2867 ctx = scmutil.revsingle(repo, rev, None) | 2867 ctx = logcmdutil.revsingle(repo, rev, None) |
2868 | 2868 |
2869 end = b'\n' | 2869 end = b'\n' |
2870 if opts.get(b'print0'): | 2870 if opts.get(b'print0'): |
2871 end = b'\0' | 2871 end = b'\0' |
2872 fmt = b'%s' + end | 2872 fmt = b'%s' + end |
3173 revs = logcmdutil.revrange(repo, revs) | 3173 revs = logcmdutil.revrange(repo, revs) |
3174 | 3174 |
3175 skipped = set() | 3175 skipped = set() |
3176 basectx = None | 3176 basectx = None |
3177 if opts.get('base'): | 3177 if opts.get('base'): |
3178 basectx = scmutil.revsingle(repo, opts['base'], None) | 3178 basectx = logcmdutil.revsingle(repo, opts['base'], None) |
3179 if basectx is None: | 3179 if basectx is None: |
3180 # check for merges | 3180 # check for merges |
3181 for rev in repo.revs(b'%ld and merge()', revs): | 3181 for rev in repo.revs(b'%ld and merge()', revs): |
3182 ui.warn(_(b'skipping ungraftable merge revision %d\n') % rev) | 3182 ui.warn(_(b'skipping ungraftable merge revision %d\n') % rev) |
3183 skipped.add(rev) | 3183 skipped.add(rev) |
3694 opts = pycompat.byteskwargs(opts) | 3694 opts = pycompat.byteskwargs(opts) |
3695 start = None | 3695 start = None |
3696 rev = opts.get(b'rev') | 3696 rev = opts.get(b'rev') |
3697 if rev: | 3697 if rev: |
3698 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') | 3698 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') |
3699 start = scmutil.revsingle(repo, rev, None).node() | 3699 start = logcmdutil.revsingle(repo, rev, None).node() |
3700 | 3700 |
3701 if opts.get(b'topo'): | 3701 if opts.get(b'topo'): |
3702 heads = [repo[h] for h in repo.heads(start)] | 3702 heads = [repo[h] for h in repo.heads(start)] |
3703 else: | 3703 else: |
3704 heads = [] | 3704 heads = [] |
3930 if bookmarks or b'bookmarks' in fm.datahint(): | 3930 if bookmarks or b'bookmarks' in fm.datahint(): |
3931 fm.data(bookmarks=fm.formatlist(getbms(), name=b'bookmark')) | 3931 fm.data(bookmarks=fm.formatlist(getbms(), name=b'bookmark')) |
3932 else: | 3932 else: |
3933 if rev: | 3933 if rev: |
3934 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') | 3934 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') |
3935 ctx = scmutil.revsingle(repo, rev, None) | 3935 ctx = logcmdutil.revsingle(repo, rev, None) |
3936 | 3936 |
3937 if ctx.rev() is None: | 3937 if ctx.rev() is None: |
3938 ctx = repo[None] | 3938 ctx = repo[None] |
3939 parents = ctx.parents() | 3939 parents = ctx.parents() |
3940 taglist = [] | 3940 taglist = [] |
4443 opts = pycompat.byteskwargs(opts) | 4443 opts = pycompat.byteskwargs(opts) |
4444 if opts.get(b'print0'): | 4444 if opts.get(b'print0'): |
4445 end = b'\0' | 4445 end = b'\0' |
4446 else: | 4446 else: |
4447 end = b'\n' | 4447 end = b'\n' |
4448 ctx = scmutil.revsingle(repo, opts.get(b'rev'), None) | 4448 ctx = logcmdutil.revsingle(repo, opts.get(b'rev'), None) |
4449 | 4449 |
4450 ret = 1 | 4450 ret = 1 |
4451 m = scmutil.match( | 4451 m = scmutil.match( |
4452 ctx, pats, opts, default=b'relglob', badfn=lambda x, y: False | 4452 ctx, pats, opts, default=b'relglob', badfn=lambda x, y: False |
4453 ) | 4453 ) |
4788 | 4788 |
4789 char = {b'l': b'@', b'x': b'*', b'': b'', b't': b'd'} | 4789 char = {b'l': b'@', b'x': b'*', b'': b'', b't': b'd'} |
4790 mode = {b'l': b'644', b'x': b'755', b'': b'644', b't': b'755'} | 4790 mode = {b'l': b'644', b'x': b'755', b'': b'644', b't': b'755'} |
4791 if node: | 4791 if node: |
4792 repo = scmutil.unhidehashlikerevs(repo, [node], b'nowarn') | 4792 repo = scmutil.unhidehashlikerevs(repo, [node], b'nowarn') |
4793 ctx = scmutil.revsingle(repo, node) | 4793 ctx = logcmdutil.revsingle(repo, node) |
4794 mf = ctx.manifest() | 4794 mf = ctx.manifest() |
4795 ui.pager(b'manifest') | 4795 ui.pager(b'manifest') |
4796 for f in ctx: | 4796 for f in ctx: |
4797 fm.startitem() | 4797 fm.startitem() |
4798 fm.context(ctx=ctx) | 4798 fm.context(ctx=ctx) |
4875 raise error.InputError(_(b"please specify just one revision")) | 4875 raise error.InputError(_(b"please specify just one revision")) |
4876 if not node: | 4876 if not node: |
4877 node = opts.get(b'rev') | 4877 node = opts.get(b'rev') |
4878 | 4878 |
4879 if node: | 4879 if node: |
4880 ctx = scmutil.revsingle(repo, node) | 4880 ctx = logcmdutil.revsingle(repo, node) |
4881 else: | 4881 else: |
4882 if ui.configbool(b'commands', b'merge.require-rev'): | 4882 if ui.configbool(b'commands', b'merge.require-rev'): |
4883 raise error.InputError( | 4883 raise error.InputError( |
4884 _( | 4884 _( |
4885 b'configuration requires specifying revision to merge ' | 4885 b'configuration requires specifying revision to merge ' |
5054 | 5054 |
5055 opts = pycompat.byteskwargs(opts) | 5055 opts = pycompat.byteskwargs(opts) |
5056 rev = opts.get(b'rev') | 5056 rev = opts.get(b'rev') |
5057 if rev: | 5057 if rev: |
5058 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') | 5058 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') |
5059 ctx = scmutil.revsingle(repo, rev, None) | 5059 ctx = logcmdutil.revsingle(repo, rev, None) |
5060 | 5060 |
5061 if file_: | 5061 if file_: |
5062 m = scmutil.match(ctx, (file_,), opts) | 5062 m = scmutil.match(ctx, (file_,), opts) |
5063 if m.anypats() or len(m.files()) != 1: | 5063 if m.anypats() or len(m.files()) != 1: |
5064 raise error.InputError(_(b'can only specify an explicit filename')) | 5064 raise error.InputError(_(b'can only specify an explicit filename')) |
6345 ) | 6345 ) |
6346 | 6346 |
6347 rev = opts.get(b'rev') | 6347 rev = opts.get(b'rev') |
6348 if rev: | 6348 if rev: |
6349 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') | 6349 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') |
6350 ctx = scmutil.revsingle(repo, rev) | 6350 ctx = logcmdutil.revsingle(repo, rev) |
6351 | 6351 |
6352 if not ( | 6352 if not ( |
6353 pats | 6353 pats |
6354 or opts.get(b'include') | 6354 or opts.get(b'include') |
6355 or opts.get(b'exclude') | 6355 or opts.get(b'exclude') |
6903 if revs and terse: | 6903 if revs and terse: |
6904 msg = _(b'cannot use --terse with --rev') | 6904 msg = _(b'cannot use --terse with --rev') |
6905 raise error.InputError(msg) | 6905 raise error.InputError(msg) |
6906 elif change: | 6906 elif change: |
6907 repo = scmutil.unhidehashlikerevs(repo, [change], b'nowarn') | 6907 repo = scmutil.unhidehashlikerevs(repo, [change], b'nowarn') |
6908 ctx2 = scmutil.revsingle(repo, change, None) | 6908 ctx2 = logcmdutil.revsingle(repo, change, None) |
6909 ctx1 = ctx2.p1() | 6909 ctx1 = ctx2.p1() |
6910 else: | 6910 else: |
6911 repo = scmutil.unhidehashlikerevs(repo, revs, b'nowarn') | 6911 repo = scmutil.unhidehashlikerevs(repo, revs, b'nowarn') |
6912 ctx1, ctx2 = logcmdutil.revpair(repo, revs) | 6912 ctx1, ctx2 = logcmdutil.revpair(repo, revs) |
6913 | 6913 |
7451 _( | 7451 _( |
7452 b'working directory is not at a branch head ' | 7452 b'working directory is not at a branch head ' |
7453 b'(use -f to force)' | 7453 b'(use -f to force)' |
7454 ) | 7454 ) |
7455 ) | 7455 ) |
7456 node = scmutil.revsingle(repo, rev_).node() | 7456 node = logcmdutil.revsingle(repo, rev_).node() |
7457 | 7457 |
7458 if not message: | 7458 if not message: |
7459 # we don't translate commit messages | 7459 # we don't translate commit messages |
7460 message = b'Added tag %s for changeset %s' % ( | 7460 message = b'Added tag %s for changeset %s' % ( |
7461 b', '.join(names), | 7461 b', '.join(names), |
7475 ) | 7475 ) |
7476 | 7476 |
7477 # don't allow tagging the null rev | 7477 # don't allow tagging the null rev |
7478 if ( | 7478 if ( |
7479 not opts.get(b'remove') | 7479 not opts.get(b'remove') |
7480 and scmutil.revsingle(repo, rev_).rev() == nullrev | 7480 and logcmdutil.revsingle(repo, rev_).rev() == nullrev |
7481 ): | 7481 ): |
7482 raise error.InputError(_(b"cannot tag null revision")) | 7482 raise error.InputError(_(b"cannot tag null revision")) |
7483 | 7483 |
7484 tagsmod.tag( | 7484 tagsmod.tag( |
7485 repo, | 7485 repo, |
7838 | 7838 |
7839 # if we defined a bookmark, we have to remember the original name | 7839 # if we defined a bookmark, we have to remember the original name |
7840 brev = rev | 7840 brev = rev |
7841 if rev: | 7841 if rev: |
7842 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') | 7842 repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn') |
7843 ctx = scmutil.revsingle(repo, rev, default=None) | 7843 ctx = logcmdutil.revsingle(repo, rev, default=None) |
7844 rev = ctx.rev() | 7844 rev = ctx.rev() |
7845 hidden = ctx.hidden() | 7845 hidden = ctx.hidden() |
7846 overrides = {(b'ui', b'forcemerge'): opts.get('tool', b'')} | 7846 overrides = {(b'ui', b'forcemerge'): opts.get('tool', b'')} |
7847 with ui.configoverride(overrides, b'update'): | 7847 with ui.configoverride(overrides, b'update'): |
7848 ret = hg.updatetotally( | 7848 ret = hg.updatetotally( |