Do not invoke ssh with -p argument when no port has been specified.

This change allows local SSH configuration to choose the port number
to use when not explicitly set in the manifest.

(cherry picked from commit 4c0f670465)

Change-Id: Ibea99cfe46b6a2cc27f754cc3944a2fe10f6fda4
This commit is contained in:
Josh Guilfoyle 2009-08-16 09:44:40 -07:00 committed by Shawn O. Pearce
parent 2daf66740b
commit 7198572dd7

View File

@ -359,10 +359,14 @@ class RefSpec(object):
_ssh_cache = {} _ssh_cache = {}
_ssh_master = True _ssh_master = True
def _open_ssh(host, port): def _open_ssh(host, port=None):
global _ssh_master global _ssh_master
key = '%s:%s' % (host, port) if port is not None:
key = '%s:%s' % (host, port)
else:
key = host
if key in _ssh_cache: if key in _ssh_cache:
return True return True
@ -375,10 +379,13 @@ def _open_ssh(host, port):
command = ['ssh', command = ['ssh',
'-o','ControlPath %s' % ssh_sock(), '-o','ControlPath %s' % ssh_sock(),
'-p',str(port),
'-M', '-M',
'-N', '-N',
host] host]
if port is not None:
command[3:3] = ['-p',str(port)]
try: try:
Trace(': %s', ' '.join(command)) Trace(': %s', ' '.join(command))
p = subprocess.Popen(command) p = subprocess.Popen(command)
@ -422,7 +429,7 @@ def _preconnect(url):
if ':' in host: if ':' in host:
host, port = host.split(':') host, port = host.split(':')
else: else:
port = 22 port = None
if scheme in ('ssh', 'git+ssh', 'ssh+git'): if scheme in ('ssh', 'git+ssh', 'ssh+git'):
return _open_ssh(host, port) return _open_ssh(host, port)
return False return False
@ -430,7 +437,7 @@ def _preconnect(url):
m = URI_SCP.match(url) m = URI_SCP.match(url)
if m: if m:
host = m.group(1) host = m.group(1)
return _open_ssh(host, 22) return _open_ssh(host)
return False return False