comparison mercurial/store.py @ 14090:e24b5e3c2f27

add filteropener abstraction for store openers
author Dan Villiom Podlaski Christiansen <danchr@gmail.com>
date Sat, 30 Apr 2011 19:37:13 +0200
parents ba43aa1e173c
children 222c8ec7a274
comparison
equal deleted inserted replaced
14089:d3f7e110c3c0 14090:e24b5e3c2f27
4 # 4 #
5 # This software may be used and distributed according to the terms of the 5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2 or any later version. 6 # GNU General Public License version 2 or any later version.
7 7
8 from i18n import _ 8 from i18n import _
9 import osutil, util 9 import osutil, scmutil, util
10 import os, stat 10 import os, stat
11 11
12 _sha = util.sha1 12 _sha = util.sha1
13 13
14 # This avoids a collision between a file named foo and a dir named 14 # This avoids a collision between a file named foo and a dir named
239 def __init__(self, path, opener): 239 def __init__(self, path, opener):
240 self.path = path 240 self.path = path
241 self.createmode = _calcmode(path) 241 self.createmode = _calcmode(path)
242 op = opener(self.path) 242 op = opener(self.path)
243 op.createmode = self.createmode 243 op.createmode = self.createmode
244 self.opener = lambda f, *args, **kw: op(encodedir(f), *args, **kw) 244 self.opener = scmutil.filteropener(op, encodedir)
245 245
246 def join(self, f): 246 def join(self, f):
247 return self.path + '/' + encodedir(f) 247 return self.path + '/' + encodedir(f)
248 248
249 def _walk(self, relpath, recurse): 249 def _walk(self, relpath, recurse):
288 def __init__(self, path, opener): 288 def __init__(self, path, opener):
289 self.path = path + '/store' 289 self.path = path + '/store'
290 self.createmode = _calcmode(self.path) 290 self.createmode = _calcmode(self.path)
291 op = opener(self.path) 291 op = opener(self.path)
292 op.createmode = self.createmode 292 op.createmode = self.createmode
293 self.opener = lambda f, *args, **kw: op(encodefilename(f), *args, **kw) 293 self.opener = scmutil.filteropener(op, encodefilename)
294 294
295 def datafiles(self): 295 def datafiles(self):
296 for a, b, size in self._walk('data', True): 296 for a, b, size in self._walk('data', True):
297 try: 297 try:
298 a = decodefilename(a) 298 a = decodefilename(a)