# HG changeset patch
# User Augie Fackler <augie@google.com>
# Date 2015-10-14 19:11:53
# Node ID 04176eaf911b79c07a79b29bef39f9ded868b4d7
# Parent  0ef0aec56090e67983d4ab4810e51c24a67f07b2

changegroup: move manifest unpacking into its own method

The upcoming cg3 will need different logic for unpacking manifests.

diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py
--- a/mercurial/changegroup.py
+++ b/mercurial/changegroup.py
@@ -287,6 +287,18 @@ class cg1unpacker(object):
                     pos = next
             yield closechunk()
 
+    def _unpackmanifests(self, repo, revmap, trp, prog, numchanges):
+        # We know that we'll never have more manifests than we had
+        # changesets.
+        self.callback = prog(_('manifests'), numchanges)
+        # no need to check for empty manifest group here:
+        # if the result of the merge of 1 and 2 is the same in 3 and 4,
+        # no new manifest will be created and the manifest group will
+        # be empty during the pull
+        self.manifestheader()
+        repo.manifest.addgroup(self, revmap, trp)
+        repo.ui.progress(_('manifests'), None)
+
     def apply(self, repo, srctype, url, emptyok=False,
               targetphase=phases.draft, expectedtotal=None):
         """Add the changegroup returned by source.read() to this repo.
@@ -357,15 +369,7 @@ class cg1unpacker(object):
 
             # pull off the manifest group
             repo.ui.status(_("adding manifests\n"))
-            # manifests <= changesets
-            self.callback = prog(_('manifests'), changesets)
-            # no need to check for empty manifest group here:
-            # if the result of the merge of 1 and 2 is the same in 3 and 4,
-            # no new manifest will be created and the manifest group will
-            # be empty during the pull
-            self.manifestheader()
-            repo.manifest.addgroup(self, revmap, trp)
-            repo.ui.progress(_('manifests'), None)
+            self._unpackmanifests(repo, revmap, trp, prog, changesets)
 
             needfiles = {}
             if repo.ui.configbool('server', 'validate', default=False):