diff --git a/hggit/__init__.py b/hggit/__init__.py
index d1546c673c65139b53efe18f963cc9dbd0684493_aGdnaXQvX19pbml0X18ucHk=..d278f6d82a06120b8d2c6001ed8543f855ea5b15_aGdnaXQvX19pbml0X18ucHk= 100644
--- a/hggit/__init__.py
+++ b/hggit/__init__.py
@@ -347,5 +347,5 @@
 # TODO figure out something useful to do with the newbranch param
 @util.transform_notgit
 def exchangepush(orig, repo, remote, force=False, revs=None, newbranch=False,
-                 bookmarks=(), **kwargs):
+                 bookmarks=(), opargs=None, **kwargs):
     if isinstance(remote, gitrepo.gitrepo):
@@ -351,2 +351,4 @@
     if isinstance(remote, gitrepo.gitrepo):
+        if opargs is None:
+            opargs = {}
         pushop = exchange.pushoperation(repo, remote, force, revs, newbranch,
@@ -352,6 +354,6 @@
         pushop = exchange.pushoperation(repo, remote, force, revs, newbranch,
-                                        bookmarks, **kwargs)
+                                        bookmarks, **opargs)
         pushop.cgresult = repo.githandler.push(remote.path, revs, force)
         return pushop
     else:
         return orig(repo, remote, force, revs, newbranch, bookmarks=bookmarks,
@@ -354,8 +356,8 @@
         pushop.cgresult = repo.githandler.push(remote.path, revs, force)
         return pushop
     else:
         return orig(repo, remote, force, revs, newbranch, bookmarks=bookmarks,
-                    **kwargs)
+                    opargs=opargs, **kwargs)
 if not hgutil.safehasattr(localrepo.localrepository, 'push'):
     # Mercurial >= 3.2
     extensions.wrapfunction(exchange, 'push', exchangepush)