Automatically use SSH control master support during sync
By creating a background ssh "control master" process which lives
for the duration of our sync cycle we can easily cut the time for
a no-op sync of 132 projects from 60s to 18s.
Bug: REPO-11
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/project.py b/project.py
index fd3f0b8..304480a 100644
--- a/project.py
+++ b/project.py
@@ -969,11 +969,19 @@
def _RemoteFetch(self, name=None):
if not name:
name = self.remote.name
+
+ ssh_proxy = False
+ if self.GetRemote(name).PreConnectFetch():
+ ssh_proxy = True
+
cmd = ['fetch']
if not self.worktree:
cmd.append('--update-head-ok')
cmd.append(name)
- return GitCommand(self, cmd, bare = True).Wait() == 0
+ return GitCommand(self,
+ cmd,
+ bare = True,
+ ssh_proxy = ssh_proxy).Wait() == 0
def _Checkout(self, rev, quiet=False):
cmd = ['checkout']