Show More
@@ -421,7 +421,7 b' def _wraprepo(ui, repo):' | |||||
421 | """Returns the signature string representing the contents of the |
|
421 | """Returns the signature string representing the contents of the | |
422 | current project sparse configuration. This can be used to cache the |
|
422 | current project sparse configuration. This can be used to cache the | |
423 | sparse matcher for a given set of revs.""" |
|
423 | sparse matcher for a given set of revs.""" | |
424 | signaturecache = self.signaturecache |
|
424 | signaturecache = self._sparsesignaturecache | |
425 | signature = signaturecache.get('signature') |
|
425 | signature = signaturecache.get('signature') | |
426 | if includetemp: |
|
426 | if includetemp: | |
427 | tempsignature = signaturecache.get('tempsignature') |
|
427 | tempsignature = signaturecache.get('tempsignature') | |
@@ -445,13 +445,6 b' def _wraprepo(ui, repo):' | |||||
445 | signaturecache['tempsignature'] = tempsignature |
|
445 | signaturecache['tempsignature'] = tempsignature | |
446 | return '%s %s' % (str(signature), str(tempsignature)) |
|
446 | return '%s %s' % (str(signature), str(tempsignature)) | |
447 |
|
447 | |||
448 | def invalidatecaches(self): |
|
|||
449 | self.invalidatesignaturecache() |
|
|||
450 | return super(SparseRepo, self).invalidatecaches() |
|
|||
451 |
|
||||
452 | def invalidatesignaturecache(self): |
|
|||
453 | self.signaturecache.clear() |
|
|||
454 |
|
||||
455 | def sparsematch(self, *revs, **kwargs): |
|
448 | def sparsematch(self, *revs, **kwargs): | |
456 | """Returns the sparse match function for the given revs. |
|
449 | """Returns the sparse match function for the given revs. | |
457 |
|
450 | |||
@@ -470,7 +463,7 b' def _wraprepo(ui, repo):' | |||||
470 |
|
463 | |||
471 | key = '%s %s' % (str(signature), ' '.join([str(r) for r in revs])) |
|
464 | key = '%s %s' % (str(signature), ' '.join([str(r) for r in revs])) | |
472 |
|
465 | |||
473 | result = self.sparsecache.get(key, None) |
|
466 | result = self._sparsematchercache.get(key, None) | |
474 | if result: |
|
467 | if result: | |
475 | return result |
|
468 | return result | |
476 |
|
469 | |||
@@ -513,7 +506,7 b' def _wraprepo(ui, repo):' | |||||
513 | tempincludes = self.gettemporaryincludes() |
|
506 | tempincludes = self.gettemporaryincludes() | |
514 | result = forceincludematcher(result, tempincludes) |
|
507 | result = forceincludematcher(result, tempincludes) | |
515 |
|
508 | |||
516 | self.sparsecache[key] = result |
|
509 | self._sparsematchercache[key] = result | |
517 |
|
510 | |||
518 | return result |
|
511 | return result | |
519 |
|
512 | |||
@@ -523,7 +516,7 b' def _wraprepo(ui, repo):' | |||||
523 | '\n'.join(sorted(include)), |
|
516 | '\n'.join(sorted(include)), | |
524 | '\n'.join(sorted(exclude))) |
|
517 | '\n'.join(sorted(exclude))) | |
525 | self.vfs.write("sparse", raw) |
|
518 | self.vfs.write("sparse", raw) | |
526 |
se |
|
519 | sparse.invalidatesignaturecache(self) | |
527 |
|
520 | |||
528 | def addtemporaryincludes(self, files): |
|
521 | def addtemporaryincludes(self, files): | |
529 | includes = self.gettemporaryincludes() |
|
522 | includes = self.gettemporaryincludes() | |
@@ -541,7 +534,7 b' def _wraprepo(ui, repo):' | |||||
541 | def _writetemporaryincludes(self, includes): |
|
534 | def _writetemporaryincludes(self, includes): | |
542 | raw = '\n'.join(sorted(includes)) |
|
535 | raw = '\n'.join(sorted(includes)) | |
543 | self.vfs.write('tempsparse', raw) |
|
536 | self.vfs.write('tempsparse', raw) | |
544 |
se |
|
537 | sparse.invalidatesignaturecache(self) | |
545 |
|
538 | |||
546 | def prunetemporaryincludes(self): |
|
539 | def prunetemporaryincludes(self): | |
547 | if repo.vfs.exists('tempsparse'): |
|
540 | if repo.vfs.exists('tempsparse'): | |
@@ -572,15 +565,14 b' def _wraprepo(ui, repo):' | |||||
572 | dirstate.drop(file) |
|
565 | dirstate.drop(file) | |
573 |
|
566 | |||
574 | self.vfs.unlink('tempsparse') |
|
567 | self.vfs.unlink('tempsparse') | |
575 |
se |
|
568 | sparse.invalidatesignaturecache(self) | |
576 | msg = _("cleaned up %d temporarily added file(s) from the " |
|
569 | msg = _("cleaned up %d temporarily added file(s) from the " | |
577 | "sparse checkout\n") |
|
570 | "sparse checkout\n") | |
578 | ui.status(msg % len(tempincludes)) |
|
571 | ui.status(msg % len(tempincludes)) | |
579 |
|
572 | |||
580 | if 'dirstate' in repo._filecache: |
|
573 | if 'dirstate' in repo._filecache: | |
581 | repo.dirstate.repo = repo |
|
574 | repo.dirstate.repo = repo | |
582 | repo.sparsecache = {} |
|
575 | ||
583 | repo.signaturecache = {} |
|
|||
584 | repo.__class__ = SparseRepo |
|
576 | repo.__class__ = SparseRepo | |
585 |
|
577 | |||
586 | @command('^debugsparse', [ |
|
578 | @command('^debugsparse', [ |
@@ -422,6 +422,11 b' class localrepository(object):' | |||||
422 | # generic mapping between names and nodes |
|
422 | # generic mapping between names and nodes | |
423 | self.names = namespaces.namespaces() |
|
423 | self.names = namespaces.namespaces() | |
424 |
|
424 | |||
|
425 | # Key to signature value. | |||
|
426 | self._sparsesignaturecache = {} | |||
|
427 | # Signature to cached matcher instance. | |||
|
428 | self._sparsematchercache = {} | |||
|
429 | ||||
425 | def close(self): |
|
430 | def close(self): | |
426 | self._writecaches() |
|
431 | self._writecaches() | |
427 |
|
432 | |||
@@ -1300,6 +1305,7 b' class localrepository(object):' | |||||
1300 |
|
1305 | |||
1301 | self.unfiltered()._branchcaches.clear() |
|
1306 | self.unfiltered()._branchcaches.clear() | |
1302 | self.invalidatevolatilesets() |
|
1307 | self.invalidatevolatilesets() | |
|
1308 | self._sparsesignaturecache.clear() | |||
1303 |
|
1309 | |||
1304 | def invalidatevolatilesets(self): |
|
1310 | def invalidatevolatilesets(self): | |
1305 | self.filteredrevcache.clear() |
|
1311 | self.filteredrevcache.clear() |
General Comments 0
You need to be logged in to leave comments.
Login now