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 |
|
|
|
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