[PATCH 2 of 2] bookmarks: on a bare merge use config to choose target or choose @

Stephen Lee sphen.lee at gmail.com
Tue Mar 11 06:20:11 CDT 2014


# HG changeset patch
# User Stephen Lee <sphen.lee at gmail.com>
# Date 1394536638 -39600
#      Tue Mar 11 22:17:18 2014 +1100
# Node ID 44db1ede5c65a0265203f5df063049813d2da8c8
# Parent  ff0ffb9855d8e88fbcce967867f2a373eaac581f
bookmarks: on a bare merge use config to choose target or choose @

When running "hg merge" if there is an active and current bookmark
look in config for a key "bookmarks.<name>.track" and it will name
the bookmark we should merge with.  If the key is missing, and an
@ bookmark exists, merge with it instead.

This is only performed after checking for divergent bookmarks which
are given preference when merging.

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -4248,9 +4248,11 @@
                 "please merge with an explicit rev or bookmark"),
                 hint=_("run 'hg heads' to see all heads"))
         elif len(bmheads) <= 1:
-            raise util.Abort(_("no matching bookmark to merge - "
-                "please merge with an explicit rev or bookmark"),
-                hint=_("run 'hg heads' to see all heads"))
+            node = bookmarks.trackingbookmark(repo)
+            if node is None:
+                raise util.Abort(_("no matching bookmark to merge - "
+                    "please merge with an explicit rev or bookmark"),
+                    hint=_("run 'hg heads' to see all heads"))
 
     if not node and not repo._bookmarkcurrent:
         branch = repo[None].branch()
diff --git a/tests/test-bookmarks-merge.t b/tests/test-bookmarks-merge.t
--- a/tests/test-bookmarks-merge.t
+++ b/tests/test-bookmarks-merge.t
@@ -177,3 +177,53 @@
      g                         8:04dd21731d95
   $ hg id
   26bee9c5bcf3 @/c
+
+# test bookmark tracking for merge
+
+  $ hg book -d @
+  $ hg up -q g
+  $ hg --config bookmarks.g.track=e merge
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg parents
+  changeset:   8:04dd21731d95
+  bookmark:    g
+  tag:         tip
+  parent:      6:be381d1126a0
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     g
+  
+  changeset:   7:ca784329f0ba
+  bookmark:    e
+  parent:      5:26bee9c5bcf3
+  parent:      4:a0546fcfe0fb
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     merge
+  
+
+# test bookmarks implicitly tracking @ for merge
+
+  $ hg up -C -q g
+  $ hg book -r5 @
+  $ hg merge
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg parents
+  changeset:   8:04dd21731d95
+  bookmark:    g
+  tag:         tip
+  parent:      6:be381d1126a0
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     g
+  
+  changeset:   5:26bee9c5bcf3
+  bookmark:    @
+  bookmark:    c
+  parent:      3:b8f96cf4688b
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     e
+  


More information about the Mercurial-devel mailing list