[PATCH v4] commit: amending with --close-branch (issue3445)
Iulian Stana
julian.stana at gmail.com
Tue May 14 16:21:07 CDT 2013
I deleted duplicate tests and left them at the end of the file. I didn't
want to ruin the current test.
Iulian
2013/5/15 Iulian Stana <julian.stana at gmail.com>
> # 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 f9db59f38518cf077cbc119ac3acfbddc94dbceb
> # Parent 90f4587801ed6c525d1264d8f5b9285fb5cb71cc
> commit: amending with --close-branch (issue3445)
>
> You can't close a branch that hasn't got a head.
> newbranch + commit --close-branch must fail
> newbranch + commit + commit --amend --close-branch must fail
>
> You must not be allowed to close a branch that is not defined.
>
> diff --git a/mercurial/commands.py b/mercurial/commands.py
> --- a/mercurial/commands.py
> +++ b/mercurial/commands.py
> @@ -1297,12 +1297,19 @@
> # 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 and \
> + repo.parents()[0].p2().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-amend.t b/tests/test-commit-amend.t
> --- a/tests/test-commit-amend.t
> +++ b/tests/test-commit-amend.t
> @@ -304,6 +304,8 @@
> $ hg branches
> default 2:ce12b0b57d46
>
> +
> +
> Refuse to amend during a merge:
>
> $ hg up -q default
> @@ -743,3 +745,32 @@
> -aa
> -aa
>
> +
> +
> +Issue 3445: amending with --close-branch a commit that created a new head
> should fail
> +This shouldn't be possible:
> +
> + $ hg up -q default
> + $ hg branch closewithamend
> + marked working directory as branch closewithamend
> + (branches are permanent and global, did you want a bookmark?)
> + $ hg ci -Am..
> + adding cc.orig
> + adding obs.py
> + adding obs.pyc
> + $ hg ci --amend --close-branch -m 'closing'
> + abort: can only close branch heads
> + [255]
> +
> +This silliness fails:
> +
> + $ hg branch silliness
> + marked working directory as branch silliness
> + (branches are permanent and global, did you want a bookmark?)
> + $ echo b >> b
> + $ hg ci --close-branch -m'open and close'
> + abort: can only close branch heads
> + [255]
> +
> +
> +
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20130515/b439ee96/attachment.html>
More information about the Mercurial-devel
mailing list