# HG changeset patch # User Gregory Szorc # Date 2018-10-03 20:54:31 # Node ID 7a347d362a455d84bccf34347171d89724b9c9df # Parent 393e44324037599da66ace46b60616cc9e8a75b4 exchangev2: add progress bar around manifest scanning This can take a long time on large repositories. Let's add a progress bar so we don't have long periods where it isn't obvious what is going on. Differential Revision: https://phab.mercurial-scm.org/D4859 diff --git a/mercurial/exchangev2.py b/mercurial/exchangev2.py --- a/mercurial/exchangev2.py +++ b/mercurial/exchangev2.py @@ -320,19 +320,25 @@ def _derivefilesfrommanifests(repo, mani ml = repo.manifestlog fnodes = collections.defaultdict(dict) - for manifestnode in manifestnodes: - m = ml.get(b'', manifestnode) + progress = repo.ui.makeprogress( + _('scanning manifests'), total=len(manifestnodes)) + + with progress: + for manifestnode in manifestnodes: + m = ml.get(b'', manifestnode) - # TODO this will pull in unwanted nodes because it takes the storage - # delta into consideration. What we really want is something that takes - # the delta between the manifest's parents. And ideally we would - # ignore file nodes that are known locally. For now, ignore both - # these limitations. This will result in incremental fetches requesting - # data we already have. So this is far from ideal. - md = m.readfast() + # TODO this will pull in unwanted nodes because it takes the storage + # delta into consideration. What we really want is something that + # takes the delta between the manifest's parents. And ideally we + # would ignore file nodes that are known locally. For now, ignore + # both these limitations. This will result in incremental fetches + # requesting data we already have. So this is far from ideal. + md = m.readfast() - for path, fnode in md.items(): - fnodes[path].setdefault(fnode, manifestnode) + for path, fnode in md.items(): + fnodes[path].setdefault(fnode, manifestnode) + + progress.increment() return fnodes