mercurial/posix.py
branchstable
changeset 19514 cfdae231ba78
parent 19131 af3b651505e2
child 20202 a6014018ec28
--- a/mercurial/posix.py	Sat Jul 27 19:31:14 2013 -0500
+++ b/mercurial/posix.py	Sun Jul 28 15:02:32 2013 -0500
@@ -154,10 +154,16 @@
     # file already exists
     name = tempfile.mktemp(dir=path, prefix='hg-checklink-')
     try:
-        os.symlink(".", name)
+        fd = tempfile.NamedTemporaryFile(dir=path, prefix='hg-checklink-')
+        os.symlink(os.path.basename(fd.name), name)
         os.unlink(name)
         return True
-    except (OSError, AttributeError):
+    except AttributeError:
+        return False
+    except OSError, inst:
+        # sshfs might report failure while successfully creating the link
+        if inst[0] == errno.EIO and os.path.exists(name):
+            os.unlink(name)
         return False
 
 def checkosfilename(path):