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

REVISION SUMMARY
  This patch removes the changelog argument added to cgpacker.generate() few 
weeks
  ago and add a parts argument which will be a tuple of parts to be included 
into
  the changegroup.
  
  The changelog argument was used to determine that whether we need to add
  changelog data to the changegroup or not. In upcoming patches, I will need 
same
  functionality for manifests where I just want to send the dirlogs for 
extending
  a narrow clone. Instead of adding a new argument for each possible thing, 
let's
  add one argument specifying things we want to generate.

REPOSITORY
  rHG Mercurial

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

AFFECTED FILES
  hgext/narrow/narrowbundle2.py
  mercurial/changegroup.py

CHANGE DETAILS

diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py
--- a/mercurial/changegroup.py
+++ b/mercurial/changegroup.py
@@ -788,20 +788,29 @@
             self._verbosenote = lambda s: None
 
     def generate(self, commonrevs, clnodes, fastpathlinkrev, source,
-                 changelog=True):
+                 parts=None):
         """Yield a sequence of changegroup byte chunks.
-        If changelog is False, changelog data won't be added to changegroup
+
+        parts is a tuple of things which should be generated in the 
changegroup.
+        Possible values of tuple are 'changelog', 'manifest', 'dirlogs' and
+        'filelogs'
+        callers can pass a tuple omitting some part which they don't want in 
the
+        changegroup. For ex. widening with narrow passes parts as
+        ('dirlogs', 'filelogs')
         """
 
+        if parts is None:
+            parts = ('changelog', 'manifest', 'dirlogs', 'filelog')
+
         repo = self._repo
         cl = repo.changelog
 
         self._verbosenote(_('uncompressed size of bundle content:\n'))
         size = 0
 
         clstate, deltas = self._generatechangelog(cl, clnodes)
         for delta in deltas:
-            if changelog:
+            if 'changelog' in parts:
                 for chunk in _revisiondeltatochunks(delta,
                                                     self._builddeltaheader):
                     size += len(chunk)
diff --git a/hgext/narrow/narrowbundle2.py b/hgext/narrow/narrowbundle2.py
--- a/hgext/narrow/narrowbundle2.py
+++ b/hgext/narrow/narrowbundle2.py
@@ -77,8 +77,10 @@
         packer = changegroup.getbundler(cgversion, repo,
                                         filematcher=diffmatcher,
                                         fullnodes=commonnodes)
+        # XXX: we should also prevent manifests
+        reqparts = ('manifest', 'dirlogs', 'filelog')
         cgdata = packer.generate(set([nullid]), list(commonnodes), False,
-                                 'narrow_widen', changelog=False)
+                                 'narrow_widen', parts=reqparts)
 
         return cgdata
 



To: pulkit, durin42, martinvonz, #hg-reviewers
Cc: mercurial-devel
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to