[PATCH 2 of 2] store: add class _encodingopener
Adrian Buehlmann
adrian at cadifra.com
Thu Mar 31 13:05:37 CDT 2011
# HG changeset patch
# User Adrian Buehlmann <adrian at cadifra.com>
# Date 1301588555 -7200
# Node ID 800a10c2d82edc847405bbd404196ff013e32de6
# Parent 59407bbe840ae49ecc0823dd7d0acf8e731fca2f
store: add class _encodingopener
diff --git a/mercurial/store.py b/mercurial/store.py
--- a/mercurial/store.py
+++ b/mercurial/store.py
@@ -167,6 +167,14 @@
_data = 'data 00manifest.d 00manifest.i 00changelog.d 00changelog.i'
+class _encodingopener(object):
+ def __init__(self, op, encode):
+ self.opener = op
+ self.encode = encode
+
+ def __call__(self, path, *args, **kw):
+ return self.opener(self.encode(path), *args, **kw)
+
class basicstore(object):
'''base class for local repository stores'''
def __init__(self, path, opener):
@@ -174,7 +182,7 @@
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 = _encodingopener(op, encodedir)
def join(self, f):
return self.path + '/' + encodedir(f)
@@ -223,7 +231,7 @@
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 = _encodingopener(op, encodefilename)
def datafiles(self):
for a, b, size in self._walk('data', True):
More information about the Mercurial-devel
mailing list