# HG changeset patch # User Sushil khanchi # Date 2019-04-15 20:36:20 # Node ID 8d14d91584f1485e7ab522632d3529eee08178b3 # Parent 258821f2d465ebe08b92e3ff2a4bec84d3afac42 branch: abort if closing branch from a non-branchhead cset This patch make sure that we abort if the user is trying to close a branch from a cset which is not a branch head. Changes in test file reflect the fixed behaviour. Differential Revision: https://phab.mercurial-scm.org/D6282 diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -1675,6 +1675,8 @@ def _docommit(ui, repo, *pats, **opts): if not bheads: raise error.Abort(_('can only close branch heads')) + elif branch == repo['.'].branch() and repo['.'].node() not in bheads: + raise error.Abort(_('can only close branch heads')) elif opts.get('amend'): if (repo['.'].p1().branch() != branch and repo['.'].p2().branch() != branch): diff --git a/tests/test-branches.t b/tests/test-branches.t --- a/tests/test-branches.t +++ b/tests/test-branches.t @@ -956,19 +956,16 @@ Test to make sure that `--close-branch` trying to close branch from a cset which is not a branch head it should abort: -XXX: it should have aborted here $ hg ci -m "closing branch" --close-branch - created new head + abort: can only close branch heads + [255] $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg log -GT "{rev}: {node|short} {desc|firstline}\n\t{branch}\n\n" - _ 3: 006876ddd20e closing branch + o 2: 155349b645be added c | default | - | o 2: 155349b645be added c - |/ default - | o 1: 5f6d8a4bf34a added b | default |