##// END OF EJS Templates
lfs: override walk() in lfsvfs...
Matt Harbison -
r35363:79968f91 default
parent child Browse files
Show More
@@ -15,6 +15,7 b' from mercurial.i18n import _'
15 15
16 16 from mercurial import (
17 17 error,
18 pathutil,
18 19 url as urlmod,
19 20 util,
20 21 vfs as vfsmod,
@@ -32,6 +33,28 b' class lfsvfs(vfsmod.vfs):'
32 33 raise error.ProgrammingError('unexpected lfs path: %s' % path)
33 34 return super(lfsvfs, self).join(path[0:2], path[2:])
34 35
36 def walk(self, path=None, onerror=None):
37 """Yield (dirpath, '', oids) tuple for blobs under path
38
39 Oids only exist in the root of this vfs, so dirpath is always ''.
40 """
41 root = os.path.normpath(self.base)
42 # when dirpath == root, dirpath[prefixlen:] becomes empty
43 # because len(dirpath) < prefixlen.
44 prefixlen = len(pathutil.normasprefix(root))
45 oids = []
46
47 for dirpath, dirs, files in os.walk(self.reljoin(self.base, path or ''),
48 onerror=onerror):
49 dirpath = dirpath[prefixlen:]
50
51 # Silently skip unexpected files and directories
52 if len(dirpath) == 2:
53 oids.extend([dirpath + f for f in files
54 if _lfsre.match(dirpath + f)])
55
56 yield ('', '', oids)
57
35 58 class filewithprogress(object):
36 59 """a file-like object that supports __len__ and read.
37 60
General Comments 0
You need to be logged in to leave comments. Login now