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>
This commit is contained in:
parent
8bd5e60b16
commit
fb2316146f
5 changed files with 122 additions and 3 deletions
10
project.py
10
project.py
|
@ -969,11 +969,19 @@ class Project(object):
|
|||
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']
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue