util.copyfiles: don't try os_link() again if it failed before
If the os_link() call on the first file in the directory fails [1],
we switch mode to using shutil.copy() for all remaining files.
[1] happens for example on Windows for every file when cloning from a UNC
path without specifying --pull.
--- a/mercurial/util.py Thu May 27 22:50:04 2010 +0300
+++ b/mercurial/util.py Fri May 28 17:28:34 2010 +0200
@@ -458,7 +458,7 @@
for name, kind in osutil.listdir(src):
srcname = os.path.join(src, name)
dstname = os.path.join(dst, name)
- copyfiles(srcname, dstname, hardlink)
+ hardlink = copyfiles(srcname, dstname, hardlink)
else:
if hardlink:
try:
@@ -469,6 +469,8 @@
else:
shutil.copy(src, dst)
+ return hardlink
+
class path_auditor(object):
'''ensure that a filesystem path contains no banned components.
the following properties of a path are checked: