Show More
@@ -167,7 +167,7 b' class pathauditor(object):' | |||||
167 | # want to add "foo/bar/baz" before checking if there's a "foo/.hg" |
|
167 | # want to add "foo/bar/baz" before checking if there's a "foo/.hg" | |
168 | self.auditeddir.update(prefixes) |
|
168 | self.auditeddir.update(prefixes) | |
169 |
|
169 | |||
170 |
class abstract |
|
170 | class abstractvfs(object): | |
171 | """Abstract base class; cannot be instantiated""" |
|
171 | """Abstract base class; cannot be instantiated""" | |
172 |
|
172 | |||
173 | def __init__(self, *args, **kwargs): |
|
173 | def __init__(self, *args, **kwargs): | |
@@ -219,8 +219,8 b' class abstractopener(object):' | |||||
219 | def makedirs(self, path=None, mode=None): |
|
219 | def makedirs(self, path=None, mode=None): | |
220 | return util.makedirs(self.join(path), mode) |
|
220 | return util.makedirs(self.join(path), mode) | |
221 |
|
221 | |||
222 |
class |
|
222 | class vfs(abstractvfs): | |
223 |
'''Ope |
|
223 | '''Operate files relative to a base directory | |
224 |
|
224 | |||
225 | This class is used to hide the details of COW semantics and |
|
225 | This class is used to hide the details of COW semantics and | |
226 | remote file access from higher level code. |
|
226 | remote file access from higher level code. | |
@@ -335,8 +335,10 b' class opener(abstractopener):' | |||||
335 | return path.startswith('/') and path or (self.basesep + path) |
|
335 | return path.startswith('/') and path or (self.basesep + path) | |
336 | return self.base |
|
336 | return self.base | |
337 |
|
337 | |||
338 | class filteropener(abstractopener): |
|
338 | opener = vfs | |
339 | '''Wrapper opener for filtering filenames with a function.''' |
|
339 | ||
|
340 | class filtervfs(abstractvfs): | |||
|
341 | '''Wrapper vfs for filtering filenames with a function.''' | |||
340 |
|
342 | |||
341 | def __init__(self, opener, filter): |
|
343 | def __init__(self, opener, filter): | |
342 | self._filter = filter |
|
344 | self._filter = filter | |
@@ -345,6 +347,8 b' class filteropener(abstractopener):' | |||||
345 | def __call__(self, path, *args, **kwargs): |
|
347 | def __call__(self, path, *args, **kwargs): | |
346 | return self._orig(self._filter(path), *args, **kwargs) |
|
348 | return self._orig(self._filter(path), *args, **kwargs) | |
347 |
|
349 | |||
|
350 | filteropener = filtervfs | |||
|
351 | ||||
348 | def canonpath(root, cwd, myname, auditor=None): |
|
352 | def canonpath(root, cwd, myname, auditor=None): | |
349 | '''return the canonical path of myname, given cwd and root''' |
|
353 | '''return the canonical path of myname, given cwd and root''' | |
350 | if util.endswithsep(root): |
|
354 | if util.endswithsep(root): |
@@ -64,7 +64,7 b' def build_opener(ui, authinfo):' | |||||
64 | urlopener = url.opener(ui, authinfo) |
|
64 | urlopener = url.opener(ui, authinfo) | |
65 | urlopener.add_handler(byterange.HTTPRangeHandler()) |
|
65 | urlopener.add_handler(byterange.HTTPRangeHandler()) | |
66 |
|
66 | |||
67 |
class statichttp |
|
67 | class statichttpvfs(scmutil.abstractvfs): | |
68 | def __init__(self, base): |
|
68 | def __init__(self, base): | |
69 | self.base = base |
|
69 | self.base = base | |
70 |
|
70 | |||
@@ -74,7 +74,7 b' def build_opener(ui, authinfo):' | |||||
74 | f = "/".join((self.base, urllib.quote(path))) |
|
74 | f = "/".join((self.base, urllib.quote(path))) | |
75 | return httprangereader(f, urlopener) |
|
75 | return httprangereader(f, urlopener) | |
76 |
|
76 | |||
77 |
return statichttp |
|
77 | return statichttpvfs | |
78 |
|
78 | |||
79 | class statichttppeer(localrepo.localpeer): |
|
79 | class statichttppeer(localrepo.localpeer): | |
80 | def local(self): |
|
80 | def local(self): |
@@ -418,7 +418,7 b' class fncache(object):' | |||||
418 | self._load() |
|
418 | self._load() | |
419 | return iter(self.entries) |
|
419 | return iter(self.entries) | |
420 |
|
420 | |||
421 |
class _fncache |
|
421 | class _fncachevfs(scmutil.abstractvfs): | |
422 | def __init__(self, op, fnc, encode): |
|
422 | def __init__(self, op, fnc, encode): | |
423 | self.opener = op |
|
423 | self.opener = op | |
424 | self.fncache = fnc |
|
424 | self.fncache = fnc | |
@@ -451,7 +451,7 b' class fncachestore(basicstore):' | |||||
451 | op.createmode = self.createmode |
|
451 | op.createmode = self.createmode | |
452 | fnc = fncache(op) |
|
452 | fnc = fncache(op) | |
453 | self.fncache = fnc |
|
453 | self.fncache = fnc | |
454 |
self.opener = _fncache |
|
454 | self.opener = _fncachevfs(op, fnc, encode) | |
455 |
|
455 | |||
456 | def join(self, f): |
|
456 | def join(self, f): | |
457 | return self.pathsep + self.encode(f) |
|
457 | return self.pathsep + self.encode(f) |
General Comments 0
You need to be logged in to leave comments.
Login now