changeset 28273:9ac8955d8c45

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
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Fri, 26 Feb 2016 20:22:05 +0900
parents 760f9d04842a
children 5d9578d9ad1a
files mercurial/commands.py tests/test-pull-update.t
diffstat 2 files changed, 66 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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 ..