[PATCH 1 of 2] revset: expand bookmark(.) to the active bookmark

Yuya Nishihara yuya at tcha.org
Sat Aug 25 11:56:06 UTC 2018


# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1535195788 -32400
#      Sat Aug 25 20:16:28 2018 +0900
# Node ID d3e265cb2ff891c7b7a7779399017c69fee0aef7
# Parent  337443f09fc8e565f7063f5132109e9a2bc7fa96
revset: expand bookmark(.) to the active bookmark

We do that in several places. I'm not pretty sure if "literal:." should be
expanded or not, so it's disabled for now.

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -454,6 +454,8 @@ def bookmark(repo, subset, x):
         kind, pattern, matcher = stringutil.stringmatcher(bm)
         bms = set()
         if kind == 'literal':
+            if bm == pattern:
+                pattern = repo._bookmarks.expandname(pattern)
             bmrev = repo._bookmarks.get(pattern, None)
             if not bmrev:
                 raise error.RepoLookupError(_("bookmark '%s' does not exist")
diff --git a/tests/test-bookmarks.t b/tests/test-bookmarks.t
--- a/tests/test-bookmarks.t
+++ b/tests/test-bookmarks.t
@@ -151,6 +151,34 @@ bookmarks revset
   summary:     0
   
 
+"." is expanded to the active bookmark:
+
+  $ hg log -r 'bookmark(.)'
+  changeset:   1:925d80f479bb
+  bookmark:    X2
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     1
+  
+
+but "literal:." is not since "." seems not a literal bookmark:
+
+  $ hg log -r 'bookmark("literal:.")'
+  abort: bookmark '.' does not exist!
+  [255]
+
+"." should fail if there's no active bookmark:
+
+  $ hg bookmark --inactive
+  $ hg log -r 'bookmark(.)'
+  abort: no active bookmark
+  [255]
+BUG: this should be resolved to an empty set:
+  $ hg log -r 'present(bookmark(.))'
+  abort: no active bookmark
+  [255]
+
   $ hg log -r 'bookmark(unknown)'
   abort: bookmark 'unknown' does not exist!
   [255]
@@ -166,6 +194,12 @@ bookmarks revset
   $ hg help revsets | grep 'bookmark('
       "bookmark([name])"
 
+reactivate "X2"
+
+  $ hg update X2
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (activating bookmark X2)
+
 bookmarks X and X2 moved to rev 1, Y at rev -1
 
   $ hg bookmarks


More information about the Mercurial-devel mailing list