Mercurial > hg-stable
changeset 43645:a80d5ddecc2d
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'.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 09 Nov 2019 12:55:56 +0900 |
parents | fe2e0d100187 |
children | 889ac87e8bfd |
files | mercurial/bookmarks.py tests/test-bookmarks.t |
diffstat | 2 files changed, 17 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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 @