convert: add support for deterministic progress bar on scanning phase
This makes it possible to estimate how long the "scanning source"
phase will take, if the specified source repo type supports a quick
"how many changes" check.
--- a/hgext/convert/common.py Wed Sep 10 11:01:47 2014 -0400
+++ b/hgext/convert/common.py Mon May 26 11:53:12 2014 -0400
@@ -109,6 +109,13 @@
"""Return the commit object for version"""
raise NotImplementedError
+ def numcommits(self):
+ """Return the number of commits in this source.
+
+ If unknown, return None.
+ """
+ return None
+
def gettags(self):
"""Return the tags as a dictionary of name: revision
--- a/hgext/convert/convcmd.py Wed Sep 10 11:01:47 2014 -0400
+++ b/hgext/convert/convcmd.py Mon May 26 11:53:12 2014 -0400
@@ -171,6 +171,7 @@
visit = heads
known = set()
parents = {}
+ numcommits = self.source.numcommits()
while visit:
n = visit.pop(0)
if n in known:
@@ -180,7 +181,8 @@
if m == SKIPREV or self.dest.hascommitfrommap(m):
continue
known.add(n)
- self.ui.progress(_('scanning'), len(known), unit=_('revisions'))
+ self.ui.progress(_('scanning'), len(known), unit=_('revisions'),
+ total=numcommits)
commit = self.cachecommit(n)
parents[n] = []
for p in commit.parents: