--- a/mercurial/commands.py Mon Jun 23 15:03:22 2008 +0200
+++ b/mercurial/commands.py Mon Jun 23 15:02:52 2008 +0200
@@ -1891,7 +1891,7 @@
performed before any further updates are allowed.
If no revision is specified, the working directory's parent is a
- head revision, and the repository contains exactly one other head,
+ head revision, and the current branch contains exactly one other head,
the other head is merged with by default. Otherwise, an explicit
revision to merge with must be provided.
"""
@@ -1902,22 +1902,28 @@
node = rev
if not node:
- heads = repo.heads()
- if len(heads) > 2:
- raise util.Abort(_('repo has %d heads - '
- 'please merge with an explicit rev') %
- len(heads))
+ branch = repo.workingctx().branch()
+ bheads = repo.branchheads()
+ if len(bheads) > 2:
+ raise util.Abort(_("branch '%s' has %d heads - "
+ "please merge with an explicit rev") %
+ (branch, len(bheads)))
+
parent = repo.dirstate.parents()[0]
- if len(heads) == 1:
+ if len(bheads) == 1:
+ if len(repo.heads()) > 1:
+ raise util.Abort(_("branch '%s' has one head - "
+ "please merge with an explicit rev") %
+ branch)
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:
+ if parent not in bheads:
raise util.Abort(_('working dir not at a head rev - '
'use "hg update" or merge with an explicit rev'))
- node = parent == heads[0] and heads[-1] or heads[0]
+ node = parent == bheads[0] and bheads[-1] or bheads[0]
return hg.merge(repo, node, force=force)
def outgoing(ui, repo, dest=None, **opts):