Mercurial > public > mercurial-scm > hg-stable
diff mercurial/windows.py @ 35514:2062f7c2ac83
win32: implement util.getfstype()
This will allow NTFS to be added to the hardlink whitelist, and resume creating
hardlinks in transactions (which was disabled globally in 07a92bbd02e5; see also
e5ce49a30146). I opted to report "cifs" for remote volumes because this shows
in `hg debugfs`, which also reports that hardlinks are supported for these
volumes. So being able to distinguish it from "unknown" seems useful.
The documentation [1] seems to indicate that SMB isn't supported by these
functions, but experimenting shows that mapped drives are reported as "NTFS" on
Windows 7. I don't have a second Windows machine, but instead shared a temp
directory on C:\. In this setup, both of the following were detected as 'cifs'
with the explicit GetDriveType() check:
Z:\repo>hg ci -A
C:\>hg -R \\hostname\temp\repo ci -A # (without Z:\ being mapped)
It looks like this is called 6 times to add and commit a single new file, so I'm
a little surprised this isn't cached.
[1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa364993(v=vs.85).aspx
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Fri, 29 Dec 2017 21:28:19 -0500 |
parents | beede158ea8a |
children | c4caf530b1c7 |
line wrap: on
line diff
--- a/mercurial/windows.py Sat Dec 30 21:07:03 2017 -0500 +++ b/mercurial/windows.py Fri Dec 29 21:28:19 2017 -0500 @@ -32,6 +32,7 @@ osutil = policy.importmod(r'osutil') executablepath = win32.executablepath +getfstype = win32.getfstype getuser = win32.getuser hidewindow = win32.hidewindow makedir = win32.makedir @@ -226,13 +227,6 @@ def checklink(path): return False -def getfstype(dirpath): - '''Get the filesystem type name from a directory (best-effort) - - Returns None if we are unsure. Raises OSError on ENOENT, EPERM, etc. - ''' - return None - def setbinary(fd): # When run without console, pipes may expose invalid # fileno(), usually set to -1.