diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -4042,10 +4042,10 @@ def merge(ui, repo, node=None, **opts): "please merge with an explicit rev") % branch, hint=_("run 'hg heads' to see all heads")) - msg = _('there is nothing to merge') + msg, hint = _('nothing to merge'), None if parent != repo.lookup(branch): - msg = _('%s - use "hg update" instead') % msg - raise util.Abort(msg) + hint = _("use 'hg update' instead") + raise util.Abort(msg, hint=hint) if parent not in bheads: raise util.Abort(_('working directory not at a head revision'), diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -519,11 +519,12 @@ def update(repo, node, branchmerge, forc " has no effect")) elif pa == p1: if p1.branch() == p2.branch(): - raise util.Abort(_("nothing to merge (use 'hg update'" - " or check 'hg heads')")) + raise util.Abort(_("nothing to merge"), + hint=_("use 'hg update' " + "or check 'hg heads'")) if not force and (wc.files() or wc.deleted()): - raise util.Abort(_("outstanding uncommitted changes " - "(use 'hg status' to list changes)")) + raise util.Abort(_("outstanding uncommitted changes"), + hint=_("use 'hg status' to list changes")) for s in wc.substate: if wc.sub(s).dirty(): raise util.Abort(_("outstanding uncommitted changes in " diff --git a/tests/test-merge-default.t b/tests/test-merge-default.t --- a/tests/test-merge-default.t +++ b/tests/test-merge-default.t @@ -66,7 +66,7 @@ Should succeed - 2 heads: Should fail because at tip: $ hg merge - abort: there is nothing to merge + abort: nothing to merge [255] $ hg up 0 @@ -75,7 +75,8 @@ Should fail because at tip: Should fail because there is only one head: $ hg merge - abort: there is nothing to merge - use "hg update" instead + abort: nothing to merge + (use 'hg update' instead) [255] $ hg up 3 diff --git a/tests/test-merge-force.t b/tests/test-merge-force.t --- a/tests/test-merge-force.t +++ b/tests/test-merge-force.t @@ -19,7 +19,8 @@ Local deleted a file, remote removed Should fail, since there are deleted files: $ hg merge - abort: outstanding uncommitted changes (use 'hg status' to list changes) + abort: outstanding uncommitted changes + (use 'hg status' to list changes) [255] Should succeed with --force: diff --git a/tests/test-merge1.t b/tests/test-merge1.t --- a/tests/test-merge1.t +++ b/tests/test-merge1.t @@ -108,7 +108,8 @@ Contents of b should be "this is file b1 $ echo This is file b22 > b merge fails $ hg merge 2 - abort: outstanding uncommitted changes (use 'hg status' to list changes) + abort: outstanding uncommitted changes + (use 'hg status' to list changes) [255] merge expected! $ hg merge -f 2 @@ -144,7 +145,8 @@ merge expected! $ echo This is file b33 > b merge of b should fail $ hg merge 2 - abort: outstanding uncommitted changes (use 'hg status' to list changes) + abort: outstanding uncommitted changes + (use 'hg status' to list changes) [255] merge of b expected $ hg merge -f 2 diff --git a/tests/test-up-local-change.t b/tests/test-up-local-change.t --- a/tests/test-up-local-change.t +++ b/tests/test-up-local-change.t @@ -84,7 +84,8 @@ summary: 1 $ hg --debug merge - abort: there is nothing to merge - use "hg update" instead + abort: nothing to merge + (use 'hg update' instead) [255] $ hg parents changeset: 0:c19d34741b0a @@ -169,7 +170,8 @@ create a second head abort: crosses branches (merge branches or use --clean to discard changes) [255] $ hg --debug merge - abort: outstanding uncommitted changes (use 'hg status' to list changes) + abort: outstanding uncommitted changes + (use 'hg status' to list changes) [255] $ hg --debug merge -f searching for copies back to rev 1