copyfiles: add a way to relax the file system checking for hardlink
This is critical for transaction file, less for hardlink/copy clone as we are
about to do. Since `pure` build does not have a `getfstype` implementation this
would disable hardlink clone for all pure build. So we add a parameter to
control that extra check.
Differential Revision: https://phab.mercurial-scm.org/D10854
--- a/mercurial/util.py Tue Jun 08 02:31:17 2021 +0200
+++ b/mercurial/util.py Wed Jun 09 15:33:58 2021 +0200
@@ -1917,6 +1917,7 @@
checkambig=False,
nb_bytes=None,
no_hardlink_cb=None,
+ check_fs_hardlink=True,
):
"""copy a file, preserving mode and optionally other stat info like
atime/mtime
@@ -1935,7 +1936,7 @@
if checkambig:
oldstat = checkambig and filestat.frompath(dest)
unlink(dest)
- if hardlink:
+ if hardlink and check_fs_hardlink:
# Hardlinks are problematic on CIFS (issue4546), do not allow hardlinks
# unless we are confident that dest is on a whitelisted filesystem.
try: