push: use `exchange.push` in `commands.push`
To gain access to all results from the push, we need to have access to the
`pushoperation` object. We call `exchange.push` to do so.
It is impossible to just change the `localrepo.push` signature because the
change may be too subtle to be caught by external extension wrapping
`localrepo.push`.
This mean we'll have to kill `localrepo.push` because just using
`exchange.push` in `commands.py` would silently disable all wrapping around
`localrepo.push` by third-party extensions. So we'll remove it in a later
changeset to get such extensions to fail noisily.
--- a/mercurial/commands.py Thu Sep 25 02:21:59 2014 -0700
+++ b/mercurial/commands.py Thu Sep 25 01:39:39 2014 -0700
@@ -5068,10 +5068,10 @@
return not result
finally:
del repo._subtoppath
- result = repo.push(other, opts.get('force'), revs=revs,
- newbranch=opts.get('new_branch'))
-
- result = not result
+ pushop = exchange.push(repo, other, opts.get('force'), revs=revs,
+ newbranch=opts.get('new_branch'))
+
+ result = not pushop.cgresult
if opts.get('bookmark'):
bresult = bookmarks.pushtoremote(ui, repo, other, opts['bookmark'])