[PATCH] util: move checklink() to posix.py and return False on Windows
Adrian Buehlmann
adrian at cadifra.com
Tue Apr 5 10:11:52 CDT 2011
# HG changeset patch
# User Adrian Buehlmann <adrian at cadifra.com>
# Date 1301997352 -7200
# Node ID f527ca53997fdff3c9910e6a34cf37988331020f
# Parent 06803dc5fc1909c7716cfed3c1ca6b18a1fda5aa
util: move checklink() to posix.py and return False on Windows
Python added support for Windows 6.0 (Vista) symbolic links in 3.2 [1], but
even these symbolic links aren't what we can expect from a canonical
symbolic link, since creation requires SeCreateSymbolicLinkPrivilege,
which typically only admins have.
So we can safely assume that we don't have symbolic links on Windows.
[1] http://docs.python.org/py3k/library/os.html#os.symlink
diff --git a/mercurial/posix.py b/mercurial/posix.py
--- a/mercurial/posix.py
+++ b/mercurial/posix.py
@@ -135,6 +135,18 @@
return False
return not (new_file_has_exec or exec_flags_cannot_flip)
+def checklink(path):
+ """check whether the given path is on a symlink-capable filesystem"""
+ # mktemp is not racy because symlink creation will fail if the
+ # file already exists
+ name = tempfile.mktemp(dir=path, prefix='hg-checklink-')
+ try:
+ os.symlink(".", name)
+ os.unlink(name)
+ return True
+ except (OSError, AttributeError):
+ return False
+
def set_binary(fd):
pass
diff --git a/mercurial/util.py b/mercurial/util.py
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -683,18 +683,6 @@
return ''.join(result)
-def checklink(path):
- """check whether the given path is on a symlink-capable filesystem"""
- # mktemp is not racy because symlink creation will fail if the
- # file already exists
- name = tempfile.mktemp(dir=path, prefix='hg-checklink-')
- try:
- os.symlink(".", name)
- os.unlink(name)
- return True
- except (OSError, AttributeError):
- return False
-
def checknlink(testfile):
'''check whether hardlink count reporting works properly'''
diff --git a/mercurial/windows.py b/mercurial/windows.py
--- a/mercurial/windows.py
+++ b/mercurial/windows.py
@@ -135,6 +135,9 @@
def checkexec(path):
return False
+def checklink(path):
+ return False
+
def set_binary(fd):
# When run without console, pipes may expose invalid
# fileno(), usually set to -1.
More information about the Mercurial-devel
mailing list