mercurial/subrepo.py
changeset 15708 309e49491253
parent 15614 260a6449d83a
child 15735 5b384b7f48d5
--- a/mercurial/subrepo.py	Wed Dec 21 23:56:15 2011 +0100
+++ b/mercurial/subrepo.py	Thu Sep 29 17:20:04 2011 +0200
@@ -303,7 +303,7 @@
         """merge currently-saved state with the new state."""
         raise NotImplementedError
 
-    def push(self, force):
+    def push(self, opts):
         """perform whatever action is analogous to 'hg push'
 
         This may be a no-op on some systems.
@@ -519,19 +519,23 @@
         else:
             mergefunc()
 
-    def push(self, force):
+    def push(self, opts):
+        force = opts.get('force')
+        newbranch = opts.get('new_branch')
+        ssh = opts.get('ssh')
+
         # push subrepos depth-first for coherent ordering
         c = self._repo['']
         subs = c.substate # only repos that are committed
         for s in sorted(subs):
-            if not c.sub(s).push(force):
+            if not c.sub(s).push(opts):
                 return False
 
         dsturl = _abssource(self._repo, True)
         self._repo.ui.status(_('pushing subrepo %s to %s\n') %
             (subrelpath(self), dsturl))
-        other = hg.peer(self._repo.ui, {}, dsturl)
-        return self._repo.push(other, force)
+        other = hg.peer(self._repo.ui, {'ssh': ssh}, dsturl)
+        return self._repo.push(other, force, newbranch=newbranch)
 
     def outgoing(self, ui, dest, opts):
         return hg.outgoing(ui, self._repo, _abssource(self._repo, True), opts)
@@ -731,7 +735,7 @@
             if _updateprompt(self._ui, self, dirty, self._wcrev(), new):
                 self.get(state, False)
 
-    def push(self, force):
+    def push(self, opts):
         # push is a no-op for SVN
         return True
 
@@ -1025,7 +1029,9 @@
         else:
             mergefunc()
 
-    def push(self, force):
+    def push(self, opts):
+        force = opts.get('force')
+
         if not self._state[1]:
             return True
         if self._gitmissing():