Mercurial > hg
changeset 13890:31eb145b50b6
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
author | Adrian Buehlmann <adrian@cadifra.com> |
---|---|
date | Tue, 05 Apr 2011 11:55:52 +0200 |
parents | 9a96efc4af8a |
children | 1bd9f3a6a0d0 |
files | mercurial/posix.py mercurial/util.py mercurial/windows.py |
diffstat | 3 files changed, 15 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/posix.py Tue Apr 05 16:55:47 2011 +0800 +++ b/mercurial/posix.py Tue Apr 05 11:55:52 2011 +0200 @@ -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
--- a/mercurial/util.py Tue Apr 05 16:55:47 2011 +0800 +++ b/mercurial/util.py Tue Apr 05 11:55:52 2011 +0200 @@ -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'''
--- a/mercurial/windows.py Tue Apr 05 16:55:47 2011 +0800 +++ b/mercurial/windows.py Tue Apr 05 11:55:52 2011 +0200 @@ -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.