narrow: factor out logic to build ellipses related b2parts in separate fn
authorPulkit Goyal <7895pulkit@gmail.com>
Tue, 21 May 2019 05:32:14 +0530
changeset 42388 21e77ede77ab
parent 42387 92f584065b4f
child 42389 96fc696a9cb2
narrow: factor out logic to build ellipses related b2parts in separate fn This will help us switch more cleanly to using wireprotocol commands instead of using exchange.pull() which exchanges more things then required. Differential Revision: https://phab.mercurial-scm.org/D6435
hgext/narrow/narrowbundle2.py
--- a/hgext/narrow/narrowbundle2.py	Tue May 21 04:49:18 2019 +0530
+++ b/hgext/narrow/narrowbundle2.py	Tue May 21 05:32:14 2019 +0530
@@ -57,11 +57,18 @@
         raise ValueError(_('no common changegroup version'))
     version = max(cgversions)
 
-    include = sorted(filter(bool, kwargs.get(r'includepats', [])))
-    exclude = sorted(filter(bool, kwargs.get(r'excludepats', [])))
-    newmatch = narrowspec.match(repo.root, include=include, exclude=exclude)
+    oldinclude = sorted(filter(bool, kwargs.get(r'oldincludepats', [])))
+    oldexclude = sorted(filter(bool, kwargs.get(r'oldexcludepats', [])))
+    newinclude = sorted(filter(bool, kwargs.get(r'includepats', [])))
+    newexclude = sorted(filter(bool, kwargs.get(r'excludepats', [])))
+    generateellipsesbundle2(bundler, repo, oldinclude, oldexclude, newinclude,
+            newexclude, version, common, kwargs.get('known', []),
+            kwargs.get(r'depth', None), heads)
 
-    depth = kwargs.get(r'depth', None)
+def generateellipsesbundle2(bundler, repo, oldinclude, oldexclude, newinclude,
+                            newexclude, version, common, known, depth, heads):
+    newmatch = narrowspec.match(repo.root, include=newinclude,
+                                exclude=newexclude)
     if depth is not None:
         depth = int(depth)
         if depth < 1:
@@ -69,10 +76,8 @@
 
     heads = set(heads or repo.heads())
     common = set(common or [nullid])
-    oldinclude = sorted(filter(bool, kwargs.get(r'oldincludepats', [])))
-    oldexclude = sorted(filter(bool, kwargs.get(r'oldexcludepats', [])))
-    known = {bin(n) for n in kwargs.get(r'known', [])}
-    if known and (oldinclude != include or oldexclude != exclude):
+    known = {bin(n) for n in known}
+    if known and (oldinclude != newinclude or oldexclude != newexclude):
         # Steps:
         # 1. Send kill for "$known & ::common"
         #