# HG changeset patch # User Benoit Boissinot # Date 1188034211 -7200 # Node ID 9cd6578750b9a47256b0dd442659875d035919aa # Parent 2b8373bda032901419c229d9b92f539e27b89448 improve error message for 'hg merge' when repo already at branchtip diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -1928,10 +1928,13 @@ def merge(ui, repo, node=None, force=Non raise util.Abort(_('repo has %d heads - ' 'please merge with an explicit rev') % len(heads)) + parent = repo.dirstate.parents()[0] if len(heads) == 1: - raise util.Abort(_('there is nothing to merge - ' - 'use "hg update" instead')) - parent = repo.dirstate.parents()[0] + msg = _('there is nothing to merge') + if parent != repo.lookup(repo.workingctx().branch()): + msg = _('%s - use "hg update" instead' % msg) + raise util.Abort(msg) + if parent not in heads: raise util.Abort(_('working dir not at a head rev - ' 'use "hg update" or merge with an explicit rev')) diff --git a/tests/test-imerge b/tests/test-imerge --- a/tests/test-imerge +++ b/tests/test-imerge @@ -54,6 +54,10 @@ cat foo2 hg ci -m'merged' -d '3 0' hg tip -v +echo % nothing to merge -- tip +hg imerge + +hg up 0 echo % nothing to merge hg imerge diff --git a/tests/test-imerge.out b/tests/test-imerge.out --- a/tests/test-imerge.out +++ b/tests/test-imerge.out @@ -41,5 +41,8 @@ description: merged +% nothing to merge -- tip +abort: there is nothing to merge +2 files updated, 0 files merged, 1 files removed, 0 files unresolved % nothing to merge abort: there is nothing to merge - use "hg update" instead diff --git a/tests/test-merge-default b/tests/test-merge-default --- a/tests/test-merge-default +++ b/tests/test-merge-default @@ -34,6 +34,10 @@ echo % should succeed - 2 heads hg merge hg commit -mm2 +echo % should fail because at tip +hg merge + +hg up 0 echo % should fail because 1 head hg merge diff --git a/tests/test-merge-default.out b/tests/test-merge-default.out --- a/tests/test-merge-default.out +++ b/tests/test-merge-default.out @@ -13,5 +13,8 @@ 0 files updated, 0 files merged, 0 files % should succeed - 2 heads 0 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) +% should fail because at tip +abort: there is nothing to merge +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