changeset 10355:a5576908b589

merge: add hints about the use of 'hg heads' to find the rev to merge
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Sun, 07 Feb 2010 00:51:59 +0100
parents 844d83da2da9
children bc2414948012
files mercurial/commands.py tests/test-merge-closedheads.out tests/test-merge-default tests/test-merge-default.out tests/test-newbranch.out
diffstat 5 files changed, 27 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Sun Feb 07 00:43:24 2010 +0100
+++ b/mercurial/commands.py	Sun Feb 07 00:51:59 2010 +0100
@@ -2136,16 +2136,19 @@
         branch = repo.changectx(None).branch()
         bheads = repo.branchheads(branch)
         if len(bheads) > 2:
-            raise util.Abort(_("branch '%s' has %d heads - "
-                               "please merge with an explicit rev") %
-                             (branch, len(bheads)))
+            ui.warn(_("abort: branch '%s' has %d heads - "
+                      "please merge with an explicit rev\n")
+                    % (branch, len(bheads)))
+            ui.status(_("(run 'hg heads .' to see heads)\n"))
+            return False
 
         parent = repo.dirstate.parents()[0]
         if len(bheads) == 1:
             if len(repo.heads()) > 1:
-                raise util.Abort(_("branch '%s' has one head - "
-                                   "please merge with an explicit rev") %
-                                 branch)
+                ui.warn(_("abort: branch '%s' has one head - "
+                          "please merge with an explicit rev\n" % branch))
+                ui.status(_("(run 'hg heads' to see all heads)\n"))
+                return False
             msg = _('there is nothing to merge')
             if parent != repo.lookup(repo[None].branch()):
                 msg = _('%s - use "hg update" instead') % msg
--- a/tests/test-merge-closedheads.out	Sun Feb 07 00:43:24 2010 +0100
+++ b/tests/test-merge-closedheads.out	Sun Feb 07 00:51:59 2010 +0100
@@ -8,6 +8,7 @@
 % fail with three heads
 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 abort: branch 'default' has 3 heads - please merge with an explicit rev
+(run 'hg heads .' to see heads)
 % close one of the heads
 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
 % succeed with two open heads
--- a/tests/test-merge-default	Sun Feb 07 00:43:24 2010 +0100
+++ b/tests/test-merge-default	Sun Feb 07 00:51:59 2010 +0100
@@ -42,4 +42,11 @@
 echo % should fail because 1 head
 hg merge
 
+hg up 3
+echo a >> a
+hg branch foobranch
+hg commit -mf
+echo % should fail because merge with other branch
+hg merge
+
 true
--- a/tests/test-merge-default.out	Sun Feb 07 00:43:24 2010 +0100
+++ b/tests/test-merge-default.out	Sun Feb 07 00:51:59 2010 +0100
@@ -6,9 +6,11 @@
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 % should fail because not at a head
 abort: branch 'default' has 3 heads - please merge with an explicit rev
+(run 'hg heads .' to see heads)
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 % should fail because > 2 heads
 abort: branch 'default' has 3 heads - please merge with an explicit rev
+(run 'hg heads .' to see heads)
 % should succeed
 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
@@ -26,3 +28,9 @@
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 % should fail because 1 head
 abort: there is nothing to merge - use "hg update" instead
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+marked working directory as branch foobranch
+created new head
+% should fail because merge with other branch
+abort: branch 'foobranch' has one head - please merge with an explicit rev
+(run 'hg heads' to see all heads)
--- a/tests/test-newbranch.out	Sun Feb 07 00:43:24 2010 +0100
+++ b/tests/test-newbranch.out	Sun Feb 07 00:51:59 2010 +0100
@@ -168,9 +168,11 @@
 
 % implicit merge with test branch as parent
 abort: branch 'test' has one head - please merge with an explicit rev
+(run 'hg heads' to see all heads)
 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
 % implicit merge with default branch as parent
 abort: branch 'default' has 3 heads - please merge with an explicit rev
+(run 'hg heads .' to see heads)
 % 3 branch heads, explicit merge required
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)