[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