pull: activate a bookmark matching with the destination of the update (BC)
Before this patch, "hg pull -u" with a target doesn't activate a bookmark, which
matches with the explicit destination of the update, even though bare "hg
update" does so.
A "target" can be provided through:
- option --rev BOOKMARK
- source URL#BOOKMARK
--- a/mercurial/commands.py Sat Feb 13 20:13:45 2016 +0900
+++ b/mercurial/commands.py Fri Feb 26 20:22:05 2016 +0900
@@ -5566,6 +5566,10 @@
pass # no-op update
elif bookmarks.update(repo, [movemarkfrom], repo['.'].node()):
ui.status(_("updating bookmark %s\n") % repo._activebookmark)
+ elif brev in repo._bookmarks:
+ if brev != repo._activebookmark:
+ ui.status(_("(activating bookmark %s)\n") % brev)
+ bookmarks.activate(repo, brev)
return ret
if modheads > 1:
currentbranchheads = len(repo.branchheads())
--- a/tests/test-pull-update.t Sat Feb 13 20:13:45 2016 +0900
+++ b/tests/test-pull-update.t Fri Feb 26 20:22:05 2016 +0900
@@ -61,4 +61,66 @@
added 1 changesets with 1 changes to 1 files (-1 heads)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+Similarity between "hg update" and "hg pull -u" in handling bookmark
+====================================================================
+
+Test that updating activates the bookmark, which matches with the
+explicit destination of the update.
+
+ $ echo 4 >> foo
+ $ hg commit -m "#4"
+ $ hg bookmark active-after-pull
+ $ cd ../tt
+
+(1) activating by --rev BOOKMARK
+
+ $ hg bookmark -f active-before-pull
+ $ hg bookmarks
+ * active-before-pull 3:483b76ad4309
+
+ $ hg pull -u -r active-after-pull
+ pulling from $TESTTMP/t (glob)
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 1 changes to 1 files
+ adding remote bookmark active-after-pull
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (activating bookmark active-after-pull)
+
+ $ hg parents -q
+ 4:f815b3da6163
+ $ hg bookmarks
+ * active-after-pull 4:f815b3da6163
+ active-before-pull 3:483b76ad4309
+
+(discard pulled changes)
+
+ $ hg update -q 483b76ad4309
+ $ hg rollback -q
+
+(2) activating by URL#BOOKMARK
+
+ $ hg bookmark -f active-before-pull
+ $ hg bookmarks
+ * active-before-pull 3:483b76ad4309
+
+ $ hg pull -u $TESTTMP/t#active-after-pull
+ pulling from $TESTTMP/t (glob)
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 1 changes to 1 files
+ adding remote bookmark active-after-pull
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (activating bookmark active-after-pull)
+
+ $ hg parents -q
+ 4:f815b3da6163
+ $ hg bookmarks
+ * active-after-pull 4:f815b3da6163
+ active-before-pull 3:483b76ad4309
+
$ cd ..