clone: save hardlink state of util.copyfiles() stable
authorAdrian Buehlmann <adrian@cadifra.com>
Fri, 28 May 2010 17:28:34 +0200
branchstable
changeset 11255 e4dbaa40096d
parent 11254 640d419725d0
child 11256 94b7b3a1ae1b
child 11259 24fe2629c6fd
clone: save hardlink state of util.copyfiles() When trying to do hardlink-cloning, the os_link() call of the first file tried already fails on Windows, if the source is on a UNC path. This change avoids calling os_link() for the rest of files, leaving us with a *single* failed os_link() call per clone operation, if the source can't do hardlinks.
mercurial/hg.py
--- a/mercurial/hg.py	Fri May 28 17:28:34 2010 +0200
+++ b/mercurial/hg.py	Fri May 28 17:28:34 2010 +0200
@@ -277,6 +277,7 @@
                                      % dest)
                 raise
 
+            hardlink = None
             for f in src_repo.store.copylist():
                 src = os.path.join(src_repo.sharedpath, f)
                 dst = os.path.join(dest_path, f)
@@ -287,7 +288,7 @@
                     if dst.endswith('data'):
                         # lock to avoid premature writing to the target
                         dest_lock = lock.lock(os.path.join(dstbase, "lock"))
-                    util.copyfiles(src, dst)
+                    hardlink = util.copyfiles(src, dst, hardlink)
 
             # we need to re-init the repo after manually copying the data
             # into it