[PATCH 1 of 2 issue3059] util: add progress callback support to copyfiles

Augie Fackler raf at durin42.com
Sat Mar 14 00:02:05 UTC 2015


# HG changeset patch
# User Augie Fackler <augie at google.com>
# Date 1426285633 14400
#      Fri Mar 13 18:27:13 2015 -0400
# Node ID 1eae0d483e9f5cf412fa72a481fe641b78d0b248
# Parent  2b7ab29627fd93ca7f5cb838403c2f6c728469bd
util: add progress callback support to copyfiles

diff --git a/mercurial/util.py b/mercurial/util.py
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -739,12 +739,16 @@ def copyfile(src, dest, hardlink=False):
         except shutil.Error, inst:
             raise Abort(str(inst))
 
-def copyfiles(src, dst, hardlink=None):
+def copyfiles(src, dst, hardlink=None, progress=lambda t, pos: None):
     """Copy a directory tree using hardlinks if possible"""
 
     if hardlink is None:
         hardlink = (os.stat(src).st_dev ==
                     os.stat(os.path.dirname(dst)).st_dev)
+    if hardlink:
+        topic = 'linking'
+    else:
+        topic = 'copying'
 
     num = 0
     if os.path.isdir(src):
@@ -754,6 +758,7 @@ def copyfiles(src, dst, hardlink=None):
             dstname = os.path.join(dst, name)
             hardlink, n = copyfiles(srcname, dstname, hardlink)
             num += n
+            progress(topic, num)
     else:
         if hardlink:
             try:
@@ -764,6 +769,7 @@ def copyfiles(src, dst, hardlink=None):
         else:
             shutil.copy(src, dst)
         num += 1
+        progress(topic, num)
 
     return hardlink, num
 


More information about the Mercurial-devel mailing list