mercurial/commands.py
changeset 39769 b05b4b91de3d
parent 39768 2d478b05fb14
child 39770 c48738923dba
equal deleted inserted replaced
39768:2d478b05fb14 39769:b05b4b91de3d
   901     [('f', 'force', False, _('force')),
   901     [('f', 'force', False, _('force')),
   902     ('r', 'rev', '', _('revision for bookmark action'), _('REV')),
   902     ('r', 'rev', '', _('revision for bookmark action'), _('REV')),
   903     ('d', 'delete', False, _('delete a given bookmark')),
   903     ('d', 'delete', False, _('delete a given bookmark')),
   904     ('m', 'rename', '', _('rename a given bookmark'), _('OLD')),
   904     ('m', 'rename', '', _('rename a given bookmark'), _('OLD')),
   905     ('i', 'inactive', False, _('mark a bookmark inactive')),
   905     ('i', 'inactive', False, _('mark a bookmark inactive')),
       
   906     ('l', 'list', False, _('list existing bookmarks')),
   906     ('', 'active', False, _('display the active bookmark')),
   907     ('', 'active', False, _('display the active bookmark')),
   907     ] + formatteropts,
   908     ] + formatteropts,
   908     _('hg bookmarks [OPTIONS]... [NAME]...'))
   909     _('hg bookmarks [OPTIONS]... [NAME]...'))
   909 def bookmark(ui, repo, *names, **opts):
   910 def bookmark(ui, repo, *names, **opts):
   910     '''create a new bookmark or list existing bookmarks
   911     '''create a new bookmark or list existing bookmarks
   922     Bookmarks can be pushed and pulled between repositories (see
   923     Bookmarks can be pushed and pulled between repositories (see
   923     :hg:`help push` and :hg:`help pull`). If a shared bookmark has
   924     :hg:`help push` and :hg:`help pull`). If a shared bookmark has
   924     diverged, a new 'divergent bookmark' of the form 'name@path' will
   925     diverged, a new 'divergent bookmark' of the form 'name@path' will
   925     be created. Using :hg:`merge` will resolve the divergence.
   926     be created. Using :hg:`merge` will resolve the divergence.
   926 
   927 
   927     Specifying bookmark as '.' to -m or -d options is equivalent to specifying
   928     Specifying bookmark as '.' to -m/-d/-l options is equivalent to specifying
   928     the active bookmark's name.
   929     the active bookmark's name.
   929 
   930 
   930     A bookmark named '@' has the special property that :hg:`clone` will
   931     A bookmark named '@' has the special property that :hg:`clone` will
   931     check it out by default if it exists.
   932     check it out by default if it exists.
   932 
   933 
   961     opts = pycompat.byteskwargs(opts)
   962     opts = pycompat.byteskwargs(opts)
   962     force = opts.get('force')
   963     force = opts.get('force')
   963     rev = opts.get('rev')
   964     rev = opts.get('rev')
   964     inactive = opts.get('inactive')  # meaning add/rename to inactive bookmark
   965     inactive = opts.get('inactive')  # meaning add/rename to inactive bookmark
   965 
   966 
   966     selactions = [k for k in ['delete', 'rename', 'active'] if opts.get(k)]
   967     selactions = [k for k in ['delete', 'rename', 'active', 'list']
       
   968                   if opts.get(k)]
   967     if len(selactions) > 1:
   969     if len(selactions) > 1:
   968         raise error.Abort(_('--%s and --%s are incompatible')
   970         raise error.Abort(_('--%s and --%s are incompatible')
   969                           % tuple(selactions[:2]))
   971                           % tuple(selactions[:2]))
   970     if selactions:
   972     if selactions:
   971         action = selactions[0]
   973         action = selactions[0]
   972     elif names or rev:
   974     elif names or rev:
   973         action = 'add'
   975         action = 'add'
   974     elif inactive:
   976     elif inactive:
   975         action = 'inactive'  # meaning deactivate
   977         action = 'inactive'  # meaning deactivate
   976     else:
   978     else:
   977         action = None
   979         action = 'list'
   978 
   980 
   979     if rev and action in {'delete', 'rename', 'active'}:
   981     if rev and action in {'delete', 'rename', 'active', 'list'}:
   980         raise error.Abort(_("--rev is incompatible with --%s") % action)
   982         raise error.Abort(_("--rev is incompatible with --%s") % action)
   981     if names and action == 'active':
   983     if names and action == 'active':
   982         raise error.Abort(_("NAMES is incompatible with --active"))
   984         raise error.Abort(_("NAMES is incompatible with --active"))
   983     if inactive and action in {'delete', 'active'}:
   985     if inactive and action in {'delete', 'active', 'list'}:
   984         raise error.Abort(_("--inactive is incompatible with --%s") % action)
   986         raise error.Abort(_("--inactive is incompatible with --%s") % action)
   985     if not names and action in {'add', 'delete'}:
   987     if not names and action in {'add', 'delete'}:
   986         raise error.Abort(_("bookmark name required"))
   988         raise error.Abort(_("bookmark name required"))
   987 
   989 
   988     if action in {'add', 'delete', 'rename', 'inactive'}:
   990     if action in {'add', 'delete', 'rename', 'inactive'}:
  1009     elif action == 'active':
  1011     elif action == 'active':
  1010         book = repo._activebookmark
  1012         book = repo._activebookmark
  1011         if book is None:
  1013         if book is None:
  1012             return 1
  1014             return 1
  1013         ui.write("%s\n" % book, label=bookmarks.activebookmarklabel)
  1015         ui.write("%s\n" % book, label=bookmarks.activebookmarklabel)
  1014     else: # show bookmarks
  1016     elif action == 'list':
       
  1017         names = pycompat.maplist(repo._bookmarks.expandname, names)
  1015         with ui.formatter('bookmarks', opts) as fm:
  1018         with ui.formatter('bookmarks', opts) as fm:
  1016             bookmarks.printbookmarks(ui, repo, fm)
  1019             bookmarks.printbookmarks(ui, repo, fm, names)
       
  1020     else:
       
  1021         raise error.ProgrammingError('invalid action: %s' % action)
  1017 
  1022 
  1018 @command('branch',
  1023 @command('branch',
  1019     [('f', 'force', None,
  1024     [('f', 'force', None,
  1020      _('set branch name even if it shadows an existing branch')),
  1025      _('set branch name even if it shadows an existing branch')),
  1021      ('C', 'clean', None, _('reset branch name to parent branch name')),
  1026      ('C', 'clean', None, _('reset branch name to parent branch name')),