[PATCH V2] subrepo: append subrepo path to subrepo push error messages

Mads Kiilerich mads at kiilerich.com
Sat Dec 15 19:57:09 CST 2012


Angel Ezquerra wrote, On 12/16/2012 01:29 AM:
> # HG changeset patch
> # User Angel Ezquerra <angel.ezquerra at gmail.com>
> # Date 1355438273 -3600
> # Node ID cec32425a026c4aeb9a6495086b1a1fbe916be24
> # Parent  34a1a639d8358e43f4bcba7b0cff19f4e4e6958d
> subrepo: append subrepo path to subrepo push error messages
>
> This change appends the subrepo path to subrepo push errors. That is, when there
> is an error pushing a subrepo, rather than displaying:
>
> pushing subrepo MYSUBREPO to PATH
> searching for changes
> abort: push creates new remote head HEADHASH!
> hint: did you forget to merge? use push -f to force
>
> mercurial will show:
>
> pushing subrepo MYSUBREPO to PATH
> searching for changes
> abort: push creates new remote head HEADHASH! (on subrepo MYSUBREPO)
> hint: did you forget to merge? use push -f to force
>
> The rationale for this change is that the current error messages make it hard
> for TortoiseHg (and similar tools) to tell the user which subrepo caused the
> push failure.
>
> Note that I have also updated test-subrepo.t to reflect this change. The test
> passes on windows.
>
> diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py
> --- a/mercurial/subrepo.py
> +++ b/mercurial/subrepo.py
> @@ -567,7 +567,12 @@
>           self._repo.ui.status(_('pushing subrepo %s to %s\n') %
>               (subrelpath(self), dsturl))
>           other = hg.peer(self._repo, {'ssh': ssh}, dsturl)
> -        return self._repo.push(other, force, newbranch=newbranch)
> +        try:
> +            res = self._repo.push(other, force, newbranch=newbranch)
> +        except error.Abort, ex:
> +            errormsg = ex.message + (' (on subrepo %s)' % subrelpath(self))

The message should be marked up for localization.

I also wonder ... I assume a lot of other commands and exceptions from 
subrepo handling have the same issue. They should perhaps be solved 
while we are at it and with the same method. A decorator could perhaps 
be such a more generic method.decorator.

Or is push more important than other commands, making this the only fix 
of this kind that is necessary?

/Mads

/Mads


More information about the Mercurial-devel mailing list