diff --git a/git_config.py b/git_config.py index 75936d40..dc209ba8 100644 --- a/git_config.py +++ b/git_config.py @@ -359,10 +359,14 @@ class RefSpec(object): _ssh_cache = {} _ssh_master = True -def _open_ssh(host, port): +def _open_ssh(host, port=None): 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: return True @@ -375,10 +379,13 @@ def _open_ssh(host, port): command = ['ssh', '-o','ControlPath %s' % ssh_sock(), - '-p',str(port), '-M', '-N', host] + + if port is not None: + command[3:3] = ['-p',str(port)] + try: Trace(': %s', ' '.join(command)) p = subprocess.Popen(command) @@ -422,7 +429,7 @@ def _preconnect(url): if ':' in host: host, port = host.split(':') else: - port = 22 + port = None if scheme in ('ssh', 'git+ssh', 'ssh+git'): return _open_ssh(host, port) return False @@ -430,7 +437,7 @@ def _preconnect(url): m = URI_SCP.match(url) if m: host = m.group(1) - return _open_ssh(host, 22) + return _open_ssh(host) return False