diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -1674,7 +1674,10 @@ if opts.get('close_branch'): extra['close'] = '1' - if not bheads: + if repo['.'].closesbranch(): + raise error.Abort(_('current revision is already a branch closing' + ' head')) + elif not bheads: raise error.Abort(_('can only close branch heads')) elif (branch == repo['.'].branch() and repo['.'].node() not in bheads and not opts.get('force')): diff --git a/tests/test-branches.t b/tests/test-branches.t --- a/tests/test-branches.t +++ b/tests/test-branches.t @@ -280,7 +280,7 @@ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg commit -d '9 0' --close-branch -m 'close this part branch too' $ hg commit -d '9 0' --close-branch -m 're-closing this branch' - abort: can only close branch heads + abort: current revision is already a branch closing head [255] $ hg log -r tip --debug