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.
This commit is contained in:
Josh Guilfoyle 2009-08-16 09:44:40 -07:00
parent c24c720b61
commit 4c0f670465

View File

@ -356,10 +356,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
if port is not None:
key = '%s:%s' % (host, port) key = '%s:%s' % (host, port)
else:
key = host
if key in _ssh_cache: if key in _ssh_cache:
return True return True
@ -372,10 +376,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)
@ -417,7 +424,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
@ -425,7 +432,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