Patchwork [2,of,2,issue3059,v2] clone: add progress support to hardlink clones (issue3059)

login
register
mail settings
Submitter Augie Fackler
Date March 19, 2015, 5:03 p.m.
Message ID <9ee50c4273298e2bdc6a.1426784591@arthedain.pit.corp.google.com>
Download mbox | patch
Permalink /patch/8172/
State Superseded
Headers show

Comments

Augie Fackler - March 19, 2015, 5:03 p.m.
# HG changeset patch
# User Augie Fackler <augie@google.com>
# Date 1426285691 14400
#      Fri Mar 13 18:28:11 2015 -0400
# Node ID 9ee50c4273298e2bdc6af7b4ab5d545af9548fdb
# Parent  56319892a54a2694762861f22be751fd28a25813
clone: add progress support to hardlink clones (issue3059)

Patch

diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -246,6 +246,7 @@  def copystore(ui, srcrepo, destpath):
         srcpublishing = srcrepo.ui.configbool('phases', 'publish', True)
         srcvfs = scmutil.vfs(srcrepo.sharedpath)
         dstvfs = scmutil.vfs(destpath)
+        topic = None
         for f in srcrepo.store.copylist():
             if srcpublishing and f.endswith('phaseroots'):
                 continue
@@ -259,12 +260,17 @@  def copystore(ui, srcrepo, destpath):
                     # lock to avoid premature writing to the target
                     destlock = lock.lock(dstvfs, lockfile)
                 hardlink, n, topic = util.copyfiles(
-                    srcvfs.join(f), dstvfs.join(f), hardlink)
+                    srcvfs.join(f), dstvfs.join(f), hardlink,
+                    progress=ui.progress, poffset=num)
                 num += n
         if hardlink:
             ui.debug("linked %d files\n" % num)
+            if topic:
+                ui.progress(topic, None)
         else:
             ui.debug("copied %d files\n" % num)
+            if topic:
+                ui.progress(topic, None)
         return destlock
     except: # re-raises
         release(destlock)
diff --git a/tests/test-clone.t b/tests/test-clone.t
--- a/tests/test-clone.t
+++ b/tests/test-clone.t
@@ -65,6 +65,14 @@  No update, with debug option:
 
 #if hardlink
   $ hg --debug clone -U . ../c
+  linking: 1
+  linking: 2
+  linking: 3
+  linking: 4
+  linking: 5
+  linking: 6
+  linking: 7
+  linking: 8
   linked 8 files
 #else
   $ hg --debug clone -U . ../c
diff --git a/tests/test-hardlinks.t b/tests/test-hardlinks.t
--- a/tests/test-hardlinks.t
+++ b/tests/test-hardlinks.t
@@ -58,6 +58,13 @@  Prepare repo r1:
 Create hardlinked clone r2:
 
   $ hg clone -U --debug r1 r2
+  linking: 1
+  linking: 2
+  linking: 3
+  linking: 4
+  linking: 5
+  linking: 6
+  linking: 7
   linked 7 files
 
 Create non-hardlinked clone r3:
diff --git a/tests/test-subrepo-recursion.t b/tests/test-subrepo-recursion.t
--- a/tests/test-subrepo-recursion.t
+++ b/tests/test-subrepo-recursion.t
@@ -342,6 +342,16 @@  Test archiving a revision that reference
 cloned:
 
   $ hg clone -U . ../empty
+  \r (no-eol) (esc)
+  linking [ <=>                                           ] 1\r (no-eol) (esc)
+  linking [  <=>                                          ] 2\r (no-eol) (esc)
+  linking [   <=>                                         ] 3\r (no-eol) (esc)
+  linking [    <=>                                        ] 4\r (no-eol) (esc)
+  linking [     <=>                                       ] 5\r (no-eol) (esc)
+  linking [      <=>                                      ] 6\r (no-eol) (esc)
+  linking [       <=>                                     ] 7\r (no-eol) (esc)
+  linking [        <=>                                    ] 8\r (no-eol) (esc)
+                                                              \r (no-eol) (esc)
   $ cd ../empty
   $ hg archive --subrepos -r tip ../archive.tar.gz
   \r (no-eol) (esc)
@@ -355,6 +365,16 @@  cloned:
   archiving [==========================================>] 3/3\r (no-eol) (esc)
                                                               \r (no-eol) (esc)
   \r (no-eol) (esc)
+  linking [ <=>                                           ] 1\r (no-eol) (esc)
+  linking [  <=>                                          ] 2\r (no-eol) (esc)
+  linking [   <=>                                         ] 3\r (no-eol) (esc)
+  linking [    <=>                                        ] 4\r (no-eol) (esc)
+  linking [     <=>                                       ] 5\r (no-eol) (esc)
+  linking [      <=>                                      ] 6\r (no-eol) (esc)
+  linking [       <=>                                     ] 7\r (no-eol) (esc)
+  linking [        <=>                                    ] 8\r (no-eol) (esc)
+                                                              \r (no-eol) (esc)
+  \r (no-eol) (esc)
   archiving (foo) [                                     ] 0/3\r (no-eol) (esc)
   archiving (foo) [                                     ] 0/3\r (no-eol) (esc)
   archiving (foo) [===========>                         ] 1/3\r (no-eol) (esc)
@@ -365,6 +385,14 @@  cloned:
   archiving (foo) [====================================>] 3/3\r (no-eol) (esc)
                                                               \r (no-eol) (esc)
   \r (no-eol) (esc)
+  linking [ <=>                                           ] 1\r (no-eol) (esc)
+  linking [  <=>                                          ] 2\r (no-eol) (esc)
+  linking [   <=>                                         ] 3\r (no-eol) (esc)
+  linking [    <=>                                        ] 4\r (no-eol) (esc)
+  linking [     <=>                                       ] 5\r (no-eol) (esc)
+  linking [      <=>                                      ] 6\r (no-eol) (esc)
+                                                              \r (no-eol) (esc)
+  \r (no-eol) (esc)
   archiving (foo/bar) [                                 ] 0/1\r (no-eol) (glob) (esc)
   archiving (foo/bar) [                                 ] 0/1\r (no-eol) (glob) (esc)
   archiving (foo/bar) [================================>] 1/1\r (no-eol) (glob) (esc)