--- a/mercurial/commands.py Thu Aug 23 01:48:39 2018 +0200
+++ b/mercurial/commands.py Thu Aug 16 17:19:27 2018 +0200
@@ -901,6 +901,7 @@
('d', 'delete', False, _('delete a given bookmark')),
('m', 'rename', '', _('rename a given bookmark'), _('OLD')),
('i', 'inactive', False, _('mark a bookmark inactive')),
+ ('', 'active', False, _('display the active bookmark')),
] + formatteropts,
_('hg bookmarks [OPTIONS]... [NAME]...'))
def bookmark(ui, repo, *names, **opts):
@@ -927,6 +928,10 @@
A bookmark named '@' has the special property that :hg:`clone` will
check it out by default if it exists.
+ The '--active' flag will display the current bookmark or return non-zero,
+ if combined with other action, they will be performed on the active
+ bookmark.
+
.. container:: verbose
Examples:
@@ -956,6 +961,7 @@
delete = opts.get(r'delete')
rename = opts.get(r'rename')
inactive = opts.get(r'inactive')
+ active = opts.get(r'active')
if delete and rename:
raise error.Abort(_("--delete and --rename are incompatible"))
@@ -963,6 +969,16 @@
raise error.Abort(_("--rev is incompatible with --delete"))
if rename and rev:
raise error.Abort(_("--rev is incompatible with --rename"))
+ if delete and active:
+ raise error.Abort(_("--delete is incompatible with --active"))
+ if rev and active:
+ raise error.Abort(_("--rev is incompatible with --active"))
+ if rename and active:
+ raise error.Abort(_("--rename is incompatible with --active"))
+ if names and active:
+ raise error.Abort(_("NAMES is incompatible with --active"))
+ if inactive and active:
+ raise error.Abort(_("--inactive is incompatible with --active"))
if not names and (delete or rev):
raise error.Abort(_("bookmark name required"))
@@ -987,6 +1003,11 @@
ui.status(_("no active bookmark\n"))
else:
bookmarks.deactivate(repo)
+ elif active:
+ book = repo._activebookmark
+ if book is None:
+ return 1
+ ui.write("%s\n" % book, label=bookmarks.activebookmarklabel)
else: # show bookmarks
bookmarks.printbookmarks(ui, repo, **opts)