D4851: streamclone: pass narrowing related info in generatev2() and _walkstreamfiles()

pulkit (Pulkit Goyal) phabricator at mercurial-scm.org
Wed Oct 3 15:02:31 UTC 2018


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

REVISION SUMMARY
  This patch adds includes and excludes as argument to generatev2() and build a
  matcher using that and pass that into _walkstreamfiles(). This will help us in
  filtering files we stream depending on the includes and excludes passed in by
  the user.

REPOSITORY
  rHG Mercurial

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

AFFECTED FILES
  mercurial/streamclone.py

CHANGE DETAILS

diff --git a/mercurial/streamclone.py b/mercurial/streamclone.py
--- a/mercurial/streamclone.py
+++ b/mercurial/streamclone.py
@@ -16,6 +16,7 @@
     branchmap,
     cacheutil,
     error,
+    narrowspec,
     phases,
     pycompat,
     store,
@@ -190,8 +191,8 @@
     return True
 
 # This is it's own function so extensions can override it.
-def _walkstreamfiles(repo):
-    return repo.store.walk()
+def _walkstreamfiles(repo, matcher=None):
+    return repo.store.walk(matcher)
 
 def generatev1(repo):
     """Emit content for version 1 of a streaming clone.
@@ -527,7 +528,7 @@
             finally:
                 fp.close()
 
-def generatev2(repo):
+def generatev2(repo, includes=None, excludes=None):
     """Emit content for version 2 of a streaming clone.
 
     the data stream consists the following entries:
@@ -545,8 +546,12 @@
         entries = []
         totalfilesize = 0
 
+        matcher = None
+        if includes or excludes:
+            matcher = narrowspec.match(repo.root, includes, excludes)
+
         repo.ui.debug('scanning\n')
-        for name, ename, size in _walkstreamfiles(repo):
+        for name, ename, size in _walkstreamfiles(repo, matcher):
             if size:
                 entries.append((_srcstore, name, _fileappend, size))
                 totalfilesize += size



To: pulkit, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list