Show More
@@ -451,6 +451,8 b' class fncache(object):' | |||
|
451 | 451 | self.vfs = vfs |
|
452 | 452 | self.entries = None |
|
453 | 453 | self._dirty = False |
|
454 | # set of new additions to fncache | |
|
455 | self.addls = set() | |
|
454 | 456 | |
|
455 | 457 | def _load(self): |
|
456 | 458 | '''fill the entries from the fncache file''' |
@@ -479,17 +481,28 b' class fncache(object):' | |||
|
479 | 481 | fp.write(encodedir('\n'.join(self.entries) + '\n')) |
|
480 | 482 | fp.close() |
|
481 | 483 | self._dirty = False |
|
484 | if self.addls: | |
|
485 | # if we have just new entries, let's append them to the fncache | |
|
486 | tr.addbackup('fncache') | |
|
487 | fp = self.vfs('fncache', mode='ab', atomictemp=True) | |
|
488 | if self.addls: | |
|
489 | fp.write(encodedir('\n'.join(self.addls) + '\n')) | |
|
490 | fp.close() | |
|
491 | self.entries = None | |
|
492 | self.addls = set() | |
|
482 | 493 | |
|
483 | 494 | def add(self, fn): |
|
484 | 495 | if self.entries is None: |
|
485 | 496 | self._load() |
|
486 | 497 | if fn not in self.entries: |
|
487 |
self. |
|
|
488 | self.entries.add(fn) | |
|
498 | self.addls.add(fn) | |
|
489 | 499 | |
|
490 | 500 | def remove(self, fn): |
|
491 | 501 | if self.entries is None: |
|
492 | 502 | self._load() |
|
503 | if fn in self.addls: | |
|
504 | self.addls.remove(fn) | |
|
505 | return | |
|
493 | 506 | try: |
|
494 | 507 | self.entries.remove(fn) |
|
495 | 508 | self._dirty = True |
@@ -497,6 +510,8 b' class fncache(object):' | |||
|
497 | 510 | pass |
|
498 | 511 | |
|
499 | 512 | def __contains__(self, fn): |
|
513 | if fn in self.addls: | |
|
514 | return True | |
|
500 | 515 | if self.entries is None: |
|
501 | 516 | self._load() |
|
502 | 517 | return fn in self.entries |
@@ -504,7 +519,7 b' class fncache(object):' | |||
|
504 | 519 | def __iter__(self): |
|
505 | 520 | if self.entries is None: |
|
506 | 521 | self._load() |
|
507 | return iter(self.entries) | |
|
522 | return iter(self.entries | self.addls) | |
|
508 | 523 | |
|
509 | 524 | class _fncachevfs(vfsmod.abstractvfs, vfsmod.proxyvfs): |
|
510 | 525 | def __init__(self, vfs, fnc, encode): |
@@ -580,6 +595,7 b' class fncachestore(basicstore):' | |||
|
580 | 595 | |
|
581 | 596 | def invalidatecaches(self): |
|
582 | 597 | self.fncache.entries = None |
|
598 | self.fncache.addls = set() | |
|
583 | 599 | |
|
584 | 600 | def markremoved(self, fn): |
|
585 | 601 | self.fncache.remove(fn) |
General Comments 0
You need to be logged in to leave comments.
Login now