util.copyfiles: don't try os_link() again if it failed before stable
authorAdrian Buehlmann <adrian@cadifra.com>
Fri, 28 May 2010 17:28:34 +0200
branchstable
changeset 11254 640d419725d0
parent 11249 0bb67503ad4b
child 11255 e4dbaa40096d
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	Mon May 31 21:37:01 2010 +0200
+++ b/mercurial/util.py	Fri May 28 17:28:34 2010 +0200
@@ -451,7 +451,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:
@@ -462,6 +462,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: