Mercurial > hg
changeset 30913:d70971a3ae80 stable
getbundle: cleanly handle remote abort during getbundle
bundle2 allow the server to report error explicitly. This was initially
implemented for push but there is not reason to not use it for pull too. This
changeset add logic similar to the one in 'unbundle' to the
client side of 'getbundle'. That logic make sure the error is properly reported
as "remote". This will allow the server side of getbundle to send clean "Abort"
message in the next changeset.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Fri, 10 Feb 2017 18:17:20 +0100 |
parents | 3d4afc2fdcd7 |
children | f3807a135e43 |
files | mercurial/exchange.py |
diffstat | 1 files changed, 3 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/exchange.py Fri Feb 10 18:06:08 2017 +0100 +++ b/mercurial/exchange.py Fri Feb 10 18:17:20 2017 +0100 @@ -1363,6 +1363,9 @@ bundle = pullop.remote.getbundle('pull', **kwargs) try: op = bundle2.processbundle(pullop.repo, bundle, pullop.gettransaction) + except bundle2.AbortFromPart as exc: + pullop.repo.ui.status(_('remote: abort: %s\n') % exc) + raise error.Abort(_('pull failed on remote'), hint=exc.hint) except error.BundleValueError as exc: raise error.Abort(_('missing support for %s') % exc)