# HG changeset patch # User Gregory Szorc # Date 1522862168 25200 # Node ID 4c15bee42e9c3878dc130c5e622a1bd9bea410e9 # Parent dd275372985392196af3f7291b50f6ed8de535a7 store: make file filtering during walk configurable Previously, the walking mechanism assumed the use of revlogs for storage. Making the file filter configurable will enable custom stores to override _walk() so it recognizes additional files. Differential Revision: https://phab.mercurial-scm.org/D3093 diff -r dd2753729853 -r 4c15bee42e9c mercurial/store.py --- a/mercurial/store.py Wed Apr 04 09:31:19 2018 -0700 +++ b/mercurial/store.py Wed Apr 04 10:16:08 2018 -0700 @@ -319,6 +319,9 @@ _data = ('data meta 00manifest.d 00manifest.i 00changelog.d 00changelog.i' ' phaseroots obsstore') +def isrevlog(f, kind, st): + return kind == stat.S_IFREG and f[-2:] in ('.i', '.d') + class basicstore(object): '''base class for local repository stores''' def __init__(self, path, vfstype): @@ -333,7 +336,7 @@ def join(self, f): return self.path + '/' + encodedir(f) - def _walk(self, relpath, recurse): + def _walk(self, relpath, recurse, filefilter=isrevlog): '''yields (unencoded, encoded, size)''' path = self.path if relpath: @@ -347,7 +350,7 @@ p = visit.pop() for f, kind, st in readdir(p, stat=True): fp = p + '/' + f - if kind == stat.S_IFREG and f[-2:] in ('.d', '.i'): + if filefilter(f, kind, st): n = util.pconvert(fp[striplen:]) l.append((decodedir(n), n, st.st_size)) elif kind == stat.S_IFDIR and recurse: