bookmarks: accept explicit -r 'wdir()' when adding new bookmarks (
issue6218)
Even though the bookmark semantics can't be fully encoded to the virtual
working changeset idea, the active bookmark can be considered a bookmark
of the working revision.
Before, 'tgt' was None, and changes=[(bm, None)] means deleting a bookmark
named 'bm'.
--- a/mercurial/bookmarks.py Sat Nov 09 12:44:00 2019 +0900
+++ b/mercurial/bookmarks.py Sat Nov 09 12:55:56 2019 +0900
@@ -958,8 +958,13 @@
if rev:
repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn')
- ctx = scmutil.revsingle(repo, rev)
+ ctx = scmutil.revsingle(repo, rev, None)
+ # bookmarking wdir means creating a bookmark on p1 and activating it
+ activatenew = not inactive and ctx.rev() is None
+ if ctx.node() is None:
+ ctx = ctx.p1()
tgt = ctx.node()
+ assert tgt
for mark in names:
mark = checkformat(repo, mark)
@@ -984,7 +989,7 @@
repo.ui.warn(b"(%s)\n" % msg)
marks.applychanges(repo, tr, changes)
- if not inactive and cur == marks[newact] and not rev:
+ if activatenew and cur == marks[newact]:
activate(repo, newact)
elif cur != tgt and newact == repo._activebookmark:
deactivate(repo)
--- a/tests/test-bookmarks.t Sat Nov 09 12:44:00 2019 +0900
+++ b/tests/test-bookmarks.t Sat Nov 09 12:55:56 2019 +0900
@@ -619,6 +619,16 @@
x y 2:db815d6d32e6
$ hg bookmark Z
+bookmark wdir to activate it (issue6218)
+
+ $ hg bookmark -d Z
+ $ hg bookmark -r 'wdir()' Z
+ $ hg bookmark -l
+ X2 1:925d80f479bb
+ Y 2:db815d6d32e6
+ * Z 2:db815d6d32e6
+ x y 2:db815d6d32e6
+
test clone
$ hg bookmark -r 2 -i @