Mercurial > public > mercurial-scm > hg
comparison mercurial/store.py @ 8467:9890151a7f30
store: use set instead of dict
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Sun, 17 May 2009 04:16:44 +0200 |
parents | b87a50b7125c |
children | 0e91bcaaa92c |
comparison
equal
deleted
inserted
replaced
8466:afb3e504b558 | 8467:9890151a7f30 |
---|---|
232 def __init__(self, opener): | 232 def __init__(self, opener): |
233 self.opener = opener | 233 self.opener = opener |
234 self.entries = None | 234 self.entries = None |
235 | 235 |
236 def loadfncache(self): | 236 def loadfncache(self): |
237 self.entries = {} | 237 self.entries = set() |
238 for f in fncache(self.opener): | 238 for f in fncache(self.opener): |
239 self.entries[f] = True | 239 self.entries.add(f) |
240 | 240 |
241 def __call__(self, path, mode='r', *args, **kw): | 241 def __call__(self, path, mode='r', *args, **kw): |
242 if mode not in ('r', 'rb') and path.startswith('data/'): | 242 if mode not in ('r', 'rb') and path.startswith('data/'): |
243 if self.entries is None: | 243 if self.entries is None: |
244 self.loadfncache() | 244 self.loadfncache() |
245 if path not in self.entries: | 245 if path not in self.entries: |
246 self.opener('fncache', 'ab').write(path + '\n') | 246 self.opener('fncache', 'ab').write(path + '\n') |
247 # fncache may contain non-existent files after rollback / strip | 247 # fncache may contain non-existent files after rollback / strip |
248 self.entries[path] = True | 248 self.entries.add(path) |
249 return self.opener(hybridencode(path), mode, *args, **kw) | 249 return self.opener(hybridencode(path), mode, *args, **kw) |
250 | 250 |
251 class fncachestore(basicstore): | 251 class fncachestore(basicstore): |
252 def __init__(self, path, opener, pathjoiner): | 252 def __init__(self, path, opener, pathjoiner): |
253 self.pathjoiner = pathjoiner | 253 self.pathjoiner = pathjoiner |