util.copyfiles: don't try os_link() again if it failed before
authorAdrian Buehlmann <adrian@cadifra.com>
Fri, 28 May 2010 17:28:34 +0200
changeset 11232 97f6d2a02c1f
parent 11231 1107888a1ad1
child 11233 5593ff6d1e5a
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.
mercurial/util.py
--- 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: