mercurial/commands.py
changeset 48118 5105a9975407
parent 48117 b74e128676d4
child 48240 607e9322fc89
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(