ソースを参照

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>
Shawn O. Pearce 17 年 前
コミット
d63bbf44dc
1 ファイル変更4 行追加1 行削除
  1. 4 1
      git_command.py

+ 4 - 1
git_command.py

@@ -35,8 +35,11 @@ def _ssh_sock(create=True):
   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