##// END OF EJS Templates
tags-cache: directly operate on rev-num warming hgtagsfnodescache...
marmoute -
r52491:2664cacd default
parent child Browse files
Show More
@@ -83,9 +83,7 b' from .utils import stringutil'
83 83 def warm_cache(repo):
84 84 """ensure the cache is properly filled"""
85 85 unfi = repo.unfiltered()
86 tonode = unfi.changelog.node
87 nodes = [tonode(r) for r in unfi.changelog.revs()]
88 _getfnodes(repo.ui, repo, nodes)
86 _getfnodes(repo.ui, repo, revs=unfi.changelog.revs())
89 87
90 88
91 89 def fnoderevs(ui, repo, revs):
@@ -498,7 +496,7 b' def _readtagcache(ui, repo):'
498 496 return (repoheads, cachefnode, valid, None, True)
499 497
500 498
501 def _getfnodes(ui, repo, nodes):
499 def _getfnodes(ui, repo, nodes=None, revs=None):
502 500 """return .hgtags fnodes for a list of changeset nodes
503 501
504 502 Return value is a {node: fnode} mapping. There will be no entry for nodes
@@ -510,9 +508,21 b' def _getfnodes(ui, repo, nodes):'
510 508 validated_fnodes = set()
511 509 unknown_entries = set()
512 510
511 if nodes is None and revs is None:
512 raise error.ProgrammingError("need to specify either nodes or revs")
513 elif nodes is not None and revs is None:
514 to_rev = repo.changelog.index.rev
515 nodes_revs = ((n, to_rev(n)) for n in nodes)
516 elif nodes is None and revs is not None:
517 to_node = repo.changelog.node
518 nodes_revs = ((to_node(r), r) for r in revs)
519 else:
520 msg = "need to specify only one of nodes or revs"
521 raise error.ProgrammingError(msg)
522
513 523 flog = None
514 for node in nodes:
515 fnode = fnodescache.getfnode(node)
524 for node, rev in nodes_revs:
525 fnode = fnodescache.getfnode(node=node, rev=rev)
516 526 if fnode != repo.nullid:
517 527 if fnode not in validated_fnodes:
518 528 if flog is None:
@@ -765,7 +775,7 b' class hgtagsfnodescache:'
765 775 # TODO: zero fill entire record, because it's invalid not missing?
766 776 self._raw.extend(b'\xff' * (wantedlen - rawlen))
767 777
768 def getfnode(self, node, computemissing=True):
778 def getfnode(self, node, computemissing=True, rev=None):
769 779 """Obtain the filenode of the .hgtags file at a specified revision.
770 780
771 781 If the value is in the cache, the entry will be validated and returned.
@@ -780,7 +790,8 b' class hgtagsfnodescache:'
780 790 if node == self._repo.nullid:
781 791 return node
782 792
783 rev = self._repo.changelog.rev(node)
793 if rev is None:
794 rev = self._repo.changelog.rev(node)
784 795
785 796 self.lookupcount += 1
786 797
General Comments 0
You need to be logged in to leave comments. Login now