mercurial/posix.py
changeset 30555 6a672c3b7860
parent 30448 8836f13e3c5b
child 30612 d623cc6b3742
--- a/mercurial/posix.py	Tue Nov 29 07:20:03 2016 -0800
+++ b/mercurial/posix.py	Wed Nov 30 16:39:36 2016 +0000
@@ -231,10 +231,18 @@
             cachedir = None
         name = tempfile.mktemp(dir=checkdir, prefix='checklink-')
         try:
-            fd = tempfile.NamedTemporaryFile(dir=checkdir,
-                                             prefix='hg-checklink-')
+            fd = None
+            if cachedir is None:
+                fd = tempfile.NamedTemporaryFile(dir=checkdir,
+                                                 prefix='hg-checklink-')
+                target = os.path.basename(fd.name)
+            else:
+                # create a fixed file to link to; doesn't matter if it
+                # already exists.
+                target = 'checklink-target'
+                open(os.path.join(cachedir, target), 'w').close()
             try:
-                os.symlink(os.path.basename(fd.name), name)
+                os.symlink(target, name)
                 if cachedir is None:
                     os.unlink(name)
                 else:
@@ -249,7 +257,8 @@
                     continue
                 raise
             finally:
-                fd.close()
+                if fd is not None:
+                    fd.close()
         except AttributeError:
             return False
         except OSError as inst: