Work around 'ControlPath too long' on Mac OS X
Mac OS X sets TMPDIR to a very long path within /var, so long
that a socket created in that location is too big for a struct
sockaddr_un on the platform, resulting in OpenSSH being unable
to create or bind to a socket in that location.
Instead we try to use the very short and very common /tmp, but
fall back to the guessed default if /tmp does not exist.
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/git_command.py b/git_command.py
index 954beba..7ff1aba 100644
--- a/git_command.py
+++ b/git_command.py
@@ -35,8 +35,11 @@
if _ssh_sock_path is None:
if not create:
return None
+ dir = '/tmp'
+ if not os.path.exists(dir):
+ dir = tempfile.gettempdir()
_ssh_sock_path = os.path.join(
- tempfile.mkdtemp('', 'ssh-'),
+ tempfile.mkdtemp('', 'ssh-', dir),
'master-%r@%h:%p')
return _ssh_sock_path