diff options
-rw-r--r-- | git_config.py | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/git_config.py b/git_config.py index e1e20463..fe983c4a 100644 --- a/git_config.py +++ b/git_config.py | |||
@@ -356,10 +356,14 @@ class RefSpec(object): | |||
356 | _ssh_cache = {} | 356 | _ssh_cache = {} |
357 | _ssh_master = True | 357 | _ssh_master = True |
358 | 358 | ||
359 | def _open_ssh(host, port): | 359 | def _open_ssh(host, port=None): |
360 | global _ssh_master | 360 | global _ssh_master |
361 | 361 | ||
362 | key = '%s:%s' % (host, port) | 362 | if port is not None: |
363 | key = '%s:%s' % (host, port) | ||
364 | else: | ||
365 | key = host | ||
366 | |||
363 | if key in _ssh_cache: | 367 | if key in _ssh_cache: |
364 | return True | 368 | return True |
365 | 369 | ||
@@ -372,10 +376,13 @@ def _open_ssh(host, port): | |||
372 | 376 | ||
373 | command = ['ssh', | 377 | command = ['ssh', |
374 | '-o','ControlPath %s' % _ssh_sock(), | 378 | '-o','ControlPath %s' % _ssh_sock(), |
375 | '-p',str(port), | ||
376 | '-M', | 379 | '-M', |
377 | '-N', | 380 | '-N', |
378 | host] | 381 | host] |
382 | |||
383 | if port is not None: | ||
384 | command[3:3] = ['-p',str(port)] | ||
385 | |||
379 | try: | 386 | try: |
380 | Trace(': %s', ' '.join(command)) | 387 | Trace(': %s', ' '.join(command)) |
381 | p = subprocess.Popen(command) | 388 | p = subprocess.Popen(command) |
@@ -417,7 +424,7 @@ def _preconnect(url): | |||
417 | if ':' in host: | 424 | if ':' in host: |
418 | host, port = host.split(':') | 425 | host, port = host.split(':') |
419 | else: | 426 | else: |
420 | port = 22 | 427 | port = None |
421 | if scheme in ('ssh', 'git+ssh', 'ssh+git'): | 428 | if scheme in ('ssh', 'git+ssh', 'ssh+git'): |
422 | return _open_ssh(host, port) | 429 | return _open_ssh(host, port) |
423 | return False | 430 | return False |
@@ -425,7 +432,7 @@ def _preconnect(url): | |||
425 | m = URI_SCP.match(url) | 432 | m = URI_SCP.match(url) |
426 | if m: | 433 | if m: |
427 | host = m.group(1) | 434 | host = m.group(1) |
428 | return _open_ssh(host, 22) | 435 | return _open_ssh(host) |
429 | 436 | ||
430 | return False | 437 | return False |
431 | 438 | ||