changeset 50199:21f876895dfe

bundlerepo: handle changegroup induced phase movement in the associated method These movement comes from handling the changegroup part, so we keeps the code grouped. This will be important when handling more part (and more changegroup part in the future) This induce a small code duplication, but it does not looks terrible.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 23 Feb 2023 19:07:58 +0100
parents a6a8946d5173
children 197204dba8a2
files mercurial/bundlerepo.py
diffstat 1 files changed, 16 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/bundlerepo.py	Thu Feb 23 19:06:24 2023 +0100
+++ b/mercurial/bundlerepo.py	Thu Feb 23 19:07:58 2023 +0100
@@ -327,6 +327,14 @@
                 _(b'bundle type %s cannot be read') % type(bundle)
             )
 
+    def _handle_bundle1(self, bundle, bundlepath):
+        if bundle.compressed():
+            f = self._writetempbundle(bundle.read, b'.hg10un', header=b'HG10UN')
+            bundle = exchange.readbundle(self.ui, f, bundlepath, self.vfs)
+
+        self._bundlefile = bundle
+        self._cgunpacker = bundle
+
         self.firstnewrev = self.changelog.repotiprev + 1
         phases.retractboundary(
             self,
@@ -335,14 +343,6 @@
             [ctx.node() for ctx in self[self.firstnewrev :]],
         )
 
-    def _handle_bundle1(self, bundle, bundlepath):
-        if bundle.compressed():
-            f = self._writetempbundle(bundle.read, b'.hg10un', header=b'HG10UN')
-            bundle = exchange.readbundle(self.ui, f, bundlepath, self.vfs)
-
-        self._bundlefile = bundle
-        self._cgunpacker = bundle
-
     def _handle_bundle2_cg_part(self, bundle, part):
         assert part.type == b'changegroup'
         cgstream = part
@@ -356,6 +356,14 @@
 
         self._cgunpacker = changegroup.getunbundler(version, cgstream, b'UN')
 
+        self.firstnewrev = self.changelog.repotiprev + 1
+        phases.retractboundary(
+            self,
+            None,
+            phases.draft,
+            [ctx.node() for ctx in self[self.firstnewrev :]],
+        )
+
     def _writetempbundle(self, readfn, suffix, header=b''):
         """Write a temporary file to disk"""
         fdtemp, temp = self.vfs.mkstemp(prefix=b"hg-bundle-", suffix=suffix)