[PATCH 2 of 2 v3] clone: add progress support to hardlink clones (issue3059)
Augie Fackler
raf at durin42.com
Tue Mar 24 15:45:29 CDT 2015
# HG changeset patch
# User Augie Fackler <augie at google.com>
# Date 1426285691 14400
# Fri Mar 13 18:28:11 2015 -0400
# Node ID a150dd7b073553a381430e39b7234176ab3bc22e
# Parent 9bff84a5d07004cfe7ac2b1dfbdfb0f59ca37e18
clone: add progress support to hardlink clones (issue3059)
diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -243,6 +243,12 @@ def copystore(ui, srcrepo, destpath):
try:
hardlink = None
num = 0
+ closetopic = [None]
+ def prog(topic, pos):
+ if pos is None:
+ closetopic[0] = topic
+ else:
+ ui.progress(topic, pos + num)
srcpublishing = srcrepo.ui.configbool('phases', 'publish', True)
srcvfs = scmutil.vfs(srcrepo.sharedpath)
dstvfs = scmutil.vfs(destpath)
@@ -259,12 +265,16 @@ def copystore(ui, srcrepo, destpath):
# lock to avoid premature writing to the target
destlock = lock.lock(dstvfs, lockfile)
hardlink, n = util.copyfiles(
- srcvfs.join(f), dstvfs.join(f), hardlink)
+ srcvfs.join(f), dstvfs.join(f), hardlink, progress=prog)
num += n
if hardlink:
ui.debug("linked %d files\n" % num)
+ if closetopic[0]:
+ ui.progress(closetopic[0], None)
else:
ui.debug("copied %d files\n" % num)
+ if closetopic[0]:
+ ui.progress(closetopic[0], 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)
More information about the Mercurial-devel
mailing list