mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
add filteropener abstraction for store openers
This commit is contained in:
parent
30ecd40f14
commit
9b9141450f
@ -231,6 +231,16 @@ class opener(abstractopener):
|
||||
f.close()
|
||||
self._fixfilemode(dst)
|
||||
|
||||
class filteropener(abstractopener):
|
||||
'''Wrapper opener for filtering filenames with a function.'''
|
||||
|
||||
def __init__(self, opener, filter):
|
||||
self._filter = filter
|
||||
self._orig = opener
|
||||
|
||||
def __call__(self, path, *args, **kwargs):
|
||||
return self._orig(self._filter(path), *args, **kwargs)
|
||||
|
||||
def canonpath(root, cwd, myname, auditor=None):
|
||||
'''return the canonical path of myname, given cwd and root'''
|
||||
if util.endswithsep(root):
|
||||
|
@ -6,7 +6,7 @@
|
||||
# GNU General Public License version 2 or any later version.
|
||||
|
||||
from i18n import _
|
||||
import osutil, util
|
||||
import osutil, scmutil, util
|
||||
import os, stat
|
||||
|
||||
_sha = util.sha1
|
||||
@ -241,7 +241,7 @@ class basicstore(object):
|
||||
self.createmode = _calcmode(path)
|
||||
op = opener(self.path)
|
||||
op.createmode = self.createmode
|
||||
self.opener = lambda f, *args, **kw: op(encodedir(f), *args, **kw)
|
||||
self.opener = scmutil.filteropener(op, encodedir)
|
||||
|
||||
def join(self, f):
|
||||
return self.path + '/' + encodedir(f)
|
||||
@ -290,7 +290,7 @@ class encodedstore(basicstore):
|
||||
self.createmode = _calcmode(self.path)
|
||||
op = opener(self.path)
|
||||
op.createmode = self.createmode
|
||||
self.opener = lambda f, *args, **kw: op(encodefilename(f), *args, **kw)
|
||||
self.opener = scmutil.filteropener(op, encodefilename)
|
||||
|
||||
def datafiles(self):
|
||||
for a, b, size in self._walk('data', True):
|
||||
|
Loading…
Reference in New Issue
Block a user