[PATCH V2] push: propagate --new-branch and --ssh options when pushing subrepos

Matt Mackall mpm at selenic.com
Sat Oct 15 09:06:54 CDT 2011


On Thu, 2011-10-06 at 23:24 +0200, Angel Ezquerra wrote:
> # HG changeset patch
> # User Angel Ezquerra <angel.ezquerra at gmail.com>
> # Date 1317309604 -7200
> # Node ID f63ea5a24685e78d1cf432f9ebe1c46b1387f967
> # Parent  6dc67dced8c122f6139ae20ccdc03a6b11e8b765
> push: propagate --new-branch and --ssh options when pushing subrepos
> 
> Up until now the all the push command options were ignored when pushing
> subrepos. In particular, the fact that the --new-branch command was not passed
> down to subrepos that it was not possible to push a repo when any of its
> subrepos had a new branch, even if you used the --new-branch option of the push
> command.
> 
> In addition the error message was confusing since it showed the following hint:
> "--new-branch hint: use 'hg push --new-branch' to create new remote branches".
> However using the --new_branch flag did not fix the problem, as it was ignored
> when pushing subrepos.
> 
> This patch passes the --new-branch and --ssh flags to every subrepo that is
> pushed.
> 
> Issues/Limitations:
> 
> - git subrepos get these flags, but ignore them.
> - It is no longer possible to _not_ pass down these flags to subrepos when
> pushing.
> 
> diff --git a/mercurial/commands.py b/mercurial/commands.py
> --- a/mercurial/commands.py
> +++ b/mercurial/commands.py
> @@ -4105,7 +4105,9 @@
>          c = repo['']
>          subs = c.substate # only repos that are committed
>          for s in sorted(subs):
> -            if not c.sub(s).push(opts.get('force')):
> +            if not c.sub(s).push(opts.get('force'),
> +                    opts.get('new_branch'),
> +                    opts.get('ssh')):
>                  return False
>      finally:
>          del repo._subtoppath
> diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py
> --- a/mercurial/subrepo.py
> +++ b/mercurial/subrepo.py
> @@ -302,7 +302,7 @@
>          """merge currently-saved state with the new state."""
>          raise NotImplementedError
>  
> -    def push(self, force):
> +    def push(self, force, newbranch, ssh):

Adding a bunch of new parameters here probably isn't the way to go. This
probably needs to take an opts dict instead. And we should probably
filter it in subrepo.py.

Also, we shouldn't really do this without adding the same support on the
pull/clone side.

-- 
Mathematics is the supreme nostalgia of our time.




More information about the Mercurial-devel mailing list