# HG changeset patch # User Pierre-Yves David # Date 1411634379 25200 # Node ID 1625770c2ce1923e5ed49148488da499258f77a7 # Parent cda85cfc82528af4320362b7e8a42a4a9c277afc 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. diff -r cda85cfc8252 -r 1625770c2ce1 mercurial/commands.py --- 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'])