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