Mercurial > hg
changeset 40340:2d45b549392f
store: pass matcher to store.datafiles()
To get narrow stream clones working, we need a way to filter the storage files
using a matcher. This patch adds matcher as an argument to store.walk() and
store.datafiles() so that we can filter the files returned according to the
matcher.
Differential Revision: https://phab.mercurial-scm.org/D4850
author | Pulkit Goyal <pulkit@yandex-team.ru> |
---|---|
date | Wed, 03 Oct 2018 16:45:24 +0300 |
parents | f0e8f27768eb |
children | d916ed3ca951 |
files | mercurial/store.py |
diffstat | 1 files changed, 10 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/store.py Wed Oct 03 17:59:05 2018 +0300 +++ b/mercurial/store.py Wed Oct 03 16:45:24 2018 +0300 @@ -359,17 +359,21 @@ l.sort() return l - def datafiles(self): + def datafiles(self, matcher=None): return self._walk('data', True) + self._walk('meta', True) def topfiles(self): # yield manifest before changelog return reversed(self._walk('', False)) - def walk(self): - '''yields (unencoded, encoded, size)''' + def walk(self, matcher=None): + '''yields (unencoded, encoded, size) + + if a matcher is passed, storage files of only those tracked paths + are passed with matches the matcher + ''' # yield data files first - for x in self.datafiles(): + for x in self.datafiles(matcher): yield x for x in self.topfiles(): yield x @@ -407,7 +411,7 @@ self.vfs = vfsmod.filtervfs(vfs, encodefilename) self.opener = self.vfs - def datafiles(self): + def datafiles(self, matcher=None): for a, b, size in super(encodedstore, self).datafiles(): try: a = decodefilename(a) @@ -536,7 +540,7 @@ def getsize(self, path): return self.rawvfs.stat(path).st_size - def datafiles(self): + def datafiles(self, matcher=None): for f in sorted(self.fncache): ef = self.encode(f) try: