[PATCH v2] commit: amending with --close-branch (issue3445)
Kevin Bullock
kbullock+mercurial at ringworld.org
Thu May 2 16:26:57 CDT 2013
On 2 May 2013, at 4:12 PM, Iulian Stana wrote:
> # HG changeset patch
> # User Iulian Stana <julian.stana at gmail.com>
> # Date 1367512607 -10800
> # Thu May 02 19:36:47 2013 +0300
> # Branch stable
> # Node ID 4e58fbec4055006d786075074d4c6f78799df451
> # Parent 90f4587801ed6c525d1264d8f5b9285fb5cb71cc
> commit: amending with --close-branch (issue3445)
>
> You can't close a branch that hasn't got a head.
> newbrach + commit --close must fail
> newbranch + commit + commit --amend --close must fail
>
> diff --git a/mercurial/commands.py b/mercurial/commands.py
> --- a/mercurial/commands.py
> +++ b/mercurial/commands.py
> @@ -1297,12 +1297,18 @@
> # Let --subrepos on the command line override config setting.
> ui.setconfig('ui', 'commitsubrepos', True)
>
> + branch = repo[None].branch()
> + bheads = repo.branchheads(branch)
> +
> extra = {}
> if opts.get('close_branch'):
> extra['close'] = 1
>
> - branch = repo[None].branch()
> - bheads = repo.branchheads(branch)
> + if not bheads:
> + raise util.Abort(_('can only close branch heads'))
> + elif opts.get('amend'):
> + if repo.parents()[0].p1().branch() != branch:
> + raise util.Abort(_('can only close branch heads'))
>
> if opts.get('amend'):
> if ui.configbool('ui', 'commitsubrepos'):
> diff --git a/tests/test-commit.t b/tests/test-commit.t
> --- a/tests/test-commit.t
> +++ b/tests/test-commit.t
> @@ -307,3 +307,58 @@
> 1 6 7 ..... 1 d267bddd54f7 26d3ca0dfd18 000000000000 (re)
>
> $ cd ..
> +
> +
> +Issue 3445: amending with --close-branch a commit that created a new head should fail
> +This shouldn't be possible:
> +
> + $ hg init issue3445
> + $ cd issue3445
> + $ echo a >> a
> + $ hg ci -Am.
> + adding a
> + $ echo a >> a
> + $ hg branch foo
> + marked working directory as branch foo
> + (branches are permanent and global, did you want a bookmark?)
> + $ hg ci -Am..
> + $ hg ci --amend --close-branch -m 'closing'
> + abort: can only close branch heads
> + [255]
> +
> +
> +This silliness fails:
> +
> + $ hg branch newbranch
> + marked working directory as branch newbranch
> + (branches are permanent and global, did you want a bookmark?)
> + $ echo b >> b
> + $ hg ci --close -m'open and close'
> + abort: can only close branch heads
> + [255]
> +
> +Correct close with commit:
> +
> + $ hg branch correctclose
> + marked working directory as branch correctclose
> + (branches are permanent and global, did you want a bookmark?)
> + $ echo b >> b
> + $ hg ci -Am.
> + adding b
> + $ hg ci --close -m'open and close'
We really don't have test coverage of --close-branch _anywhere_ else?
We try hard to avoid adding extraneous test coverage. The testsuite is already too slow.
pacem in terris / мир / शान्ति / سَلاَم / 平和
Kevin R. Bullock
More information about the Mercurial-devel
mailing list