D7094: widening: remove always-true condition in widening code

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Mon Oct 14 17:57:12 UTC 2019


martinvonz created this revision.
Herald added a reviewer: durin42.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  The function is now specifically about widening, so we don't need to
  check if we're widening.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D7094

AFFECTED FILES
  hgext/narrow/narrowbundle2.py

CHANGE DETAILS

diff --git a/hgext/narrow/narrowbundle2.py b/hgext/narrow/narrowbundle2.py
--- a/hgext/narrow/narrowbundle2.py
+++ b/hgext/narrow/narrowbundle2.py
@@ -134,58 +134,57 @@
 
     heads = set(heads or repo.heads())
     common = set(common or [nullid])
-    if known and (oldinclude != newinclude or oldexclude != newexclude):
-        # Steps:
-        # 1. Send kill for "$known & ::common"
-        #
-        # 2. Send changegroup for ::common
-        #
-        # 3. Proceed.
-        #
-        # In the future, we can send kills for only the specific
-        # nodes we know should go away or change shape, and then
-        # send a data stream that tells the client something like this:
-        #
-        # a) apply this changegroup
-        # b) apply nodes XXX, YYY, ZZZ that you already have
-        # c) goto a
-        #
-        # until they've built up the full new state.
-        # Convert to revnums and intersect with "common". The client should
-        # have made it a subset of "common" already, but let's be safe.
-        known = set(repo.revs(b"%ln & ::%ln", known, common))
-        # TODO: we could send only roots() of this set, and the
-        # list of nodes in common, and the client could work out
-        # what to strip, instead of us explicitly sending every
-        # single node.
-        deadrevs = known
+    # Steps:
+    # 1. Send kill for "$known & ::common"
+    #
+    # 2. Send changegroup for ::common
+    #
+    # 3. Proceed.
+    #
+    # In the future, we can send kills for only the specific
+    # nodes we know should go away or change shape, and then
+    # send a data stream that tells the client something like this:
+    #
+    # a) apply this changegroup
+    # b) apply nodes XXX, YYY, ZZZ that you already have
+    # c) goto a
+    #
+    # until they've built up the full new state.
+    # Convert to revnums and intersect with "common". The client should
+    # have made it a subset of "common" already, but let's be safe.
+    known = set(repo.revs(b"%ln & ::%ln", known, common))
+    # TODO: we could send only roots() of this set, and the
+    # list of nodes in common, and the client could work out
+    # what to strip, instead of us explicitly sending every
+    # single node.
+    deadrevs = known
 
-        def genkills():
-            for r in deadrevs:
-                yield _KILLNODESIGNAL
-                yield repo.changelog.node(r)
-            yield _DONESIGNAL
+    def genkills():
+        for r in deadrevs:
+            yield _KILLNODESIGNAL
+            yield repo.changelog.node(r)
+        yield _DONESIGNAL
 
-        bundler.newpart(_CHANGESPECPART, data=genkills())
-        newvisit, newfull, newellipsis = exchange._computeellipsis(
-            repo, set(), common, known, newmatch
+    bundler.newpart(_CHANGESPECPART, data=genkills())
+    newvisit, newfull, newellipsis = exchange._computeellipsis(
+        repo, set(), common, known, newmatch
+    )
+    if newvisit:
+        packer = changegroup.getbundler(
+            version,
+            repo,
+            matcher=newmatch,
+            ellipses=True,
+            shallow=depth is not None,
+            ellipsisroots=newellipsis,
+            fullnodes=newfull,
         )
-        if newvisit:
-            packer = changegroup.getbundler(
-                version,
-                repo,
-                matcher=newmatch,
-                ellipses=True,
-                shallow=depth is not None,
-                ellipsisroots=newellipsis,
-                fullnodes=newfull,
-            )
-            cgdata = packer.generate(common, newvisit, False, b'narrow_widen')
+        cgdata = packer.generate(common, newvisit, False, b'narrow_widen')
 
-            part = bundler.newpart(b'changegroup', data=cgdata)
-            part.addparam(b'version', version)
-            if b'treemanifest' in repo.requirements:
-                part.addparam(b'treemanifest', b'1')
+        part = bundler.newpart(b'changegroup', data=cgdata)
+        part.addparam(b'version', version)
+        if b'treemanifest' in repo.requirements:
+            part.addparam(b'treemanifest', b'1')
 
     visitnodes, relevant_nodes, ellipsisroots = exchange._computeellipsis(
         repo, common, heads, set(), newmatch, depth=depth



To: martinvonz, durin42, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list