##// END OF EJS Templates
store: append to fncache if there are only new files to write...
Pulkit Goyal -
r40767:0728d87a default
parent child Browse files
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._dirty = True
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