899 [('f', 'force', False, _('force')), |
899 [('f', 'force', False, _('force')), |
900 ('r', 'rev', '', _('revision for bookmark action'), _('REV')), |
900 ('r', 'rev', '', _('revision for bookmark action'), _('REV')), |
901 ('d', 'delete', False, _('delete a given bookmark')), |
901 ('d', 'delete', False, _('delete a given bookmark')), |
902 ('m', 'rename', '', _('rename a given bookmark'), _('OLD')), |
902 ('m', 'rename', '', _('rename a given bookmark'), _('OLD')), |
903 ('i', 'inactive', False, _('mark a bookmark inactive')), |
903 ('i', 'inactive', False, _('mark a bookmark inactive')), |
|
904 ('', 'active', False, _('display the active bookmark')), |
904 ] + formatteropts, |
905 ] + formatteropts, |
905 _('hg bookmarks [OPTIONS]... [NAME]...')) |
906 _('hg bookmarks [OPTIONS]... [NAME]...')) |
906 def bookmark(ui, repo, *names, **opts): |
907 def bookmark(ui, repo, *names, **opts): |
907 '''create a new bookmark or list existing bookmarks |
908 '''create a new bookmark or list existing bookmarks |
908 |
909 |
924 Specifying bookmark as '.' to -m or -d options is equivalent to specifying |
925 Specifying bookmark as '.' to -m or -d options is equivalent to specifying |
925 the active bookmark's name. |
926 the active bookmark's name. |
926 |
927 |
927 A bookmark named '@' has the special property that :hg:`clone` will |
928 A bookmark named '@' has the special property that :hg:`clone` will |
928 check it out by default if it exists. |
929 check it out by default if it exists. |
|
930 |
|
931 The '--active' flag will display the current bookmark or return non-zero, |
|
932 if combined with other action, they will be performed on the active |
|
933 bookmark. |
929 |
934 |
930 .. container:: verbose |
935 .. container:: verbose |
931 |
936 |
932 Examples: |
937 Examples: |
933 |
938 |
954 force = opts.get(r'force') |
959 force = opts.get(r'force') |
955 rev = opts.get(r'rev') |
960 rev = opts.get(r'rev') |
956 delete = opts.get(r'delete') |
961 delete = opts.get(r'delete') |
957 rename = opts.get(r'rename') |
962 rename = opts.get(r'rename') |
958 inactive = opts.get(r'inactive') |
963 inactive = opts.get(r'inactive') |
|
964 active = opts.get(r'active') |
959 |
965 |
960 if delete and rename: |
966 if delete and rename: |
961 raise error.Abort(_("--delete and --rename are incompatible")) |
967 raise error.Abort(_("--delete and --rename are incompatible")) |
962 if delete and rev: |
968 if delete and rev: |
963 raise error.Abort(_("--rev is incompatible with --delete")) |
969 raise error.Abort(_("--rev is incompatible with --delete")) |
964 if rename and rev: |
970 if rename and rev: |
965 raise error.Abort(_("--rev is incompatible with --rename")) |
971 raise error.Abort(_("--rev is incompatible with --rename")) |
|
972 if delete and active: |
|
973 raise error.Abort(_("--delete is incompatible with --active")) |
|
974 if rev and active: |
|
975 raise error.Abort(_("--rev is incompatible with --active")) |
|
976 if rename and active: |
|
977 raise error.Abort(_("--rename is incompatible with --active")) |
|
978 if names and active: |
|
979 raise error.Abort(_("NAMES is incompatible with --active")) |
|
980 if inactive and active: |
|
981 raise error.Abort(_("--inactive is incompatible with --active")) |
966 if not names and (delete or rev): |
982 if not names and (delete or rev): |
967 raise error.Abort(_("bookmark name required")) |
983 raise error.Abort(_("bookmark name required")) |
968 |
984 |
969 if delete or rename or names or inactive: |
985 if delete or rename or names or inactive: |
970 with repo.wlock(), repo.lock(), repo.transaction('bookmark') as tr: |
986 with repo.wlock(), repo.lock(), repo.transaction('bookmark') as tr: |
985 ui.status(_("no bookmarks set\n")) |
1001 ui.status(_("no bookmarks set\n")) |
986 elif not repo._activebookmark: |
1002 elif not repo._activebookmark: |
987 ui.status(_("no active bookmark\n")) |
1003 ui.status(_("no active bookmark\n")) |
988 else: |
1004 else: |
989 bookmarks.deactivate(repo) |
1005 bookmarks.deactivate(repo) |
|
1006 elif active: |
|
1007 book = repo._activebookmark |
|
1008 if book is None: |
|
1009 return 1 |
|
1010 ui.write("%s\n" % book, label=bookmarks.activebookmarklabel) |
990 else: # show bookmarks |
1011 else: # show bookmarks |
991 bookmarks.printbookmarks(ui, repo, **opts) |
1012 bookmarks.printbookmarks(ui, repo, **opts) |
992 |
1013 |
993 @command('branch', |
1014 @command('branch', |
994 [('f', 'force', None, |
1015 [('f', 'force', None, |