Mercurial > hg
changeset 42120:2f8147521e59
branchcache: add functions to validate changelog nodes
This patch adds functions to validate closed nodes, validate nodes for a certain
branch and for all the branches. These functions will be used in upcoming
patches.
Differential Revision: https://phab.mercurial-scm.org/D6207
author | Pulkit Goyal <pulkit@yandex-team.ru> |
---|---|
date | Tue, 19 Mar 2019 16:52:15 +0300 |
parents | 2d428b859282 |
children | 6578654916ae |
files | mercurial/branchmap.py |
diffstat | 1 files changed, 30 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/branchmap.py Mon Apr 15 14:32:47 2019 -0700 +++ b/mercurial/branchmap.py Tue Mar 19 16:52:15 2019 +0300 @@ -126,6 +126,10 @@ def clear(self): self._per_filter.clear() +def _unknownnode(node): + """ raises ValueError when branchcache found a node which does not exists + """ + raise ValueError(r'node %s does not exist' % pycompat.sysstr(hex(node))) class branchcache(object): """A dict like object that hold branches heads cache. @@ -173,6 +177,32 @@ if self._hasnode is None: self._hasnode = lambda x: True + def _verifyclosed(self): + """ verify the closed nodes we have """ + if self._closedverified: + return + for node in self._closednodes: + if not self._hasnode(node): + _unknownnode(node) + + self._closedverified = True + + def _verifybranch(self, branch): + """ verify head nodes for the given branch. If branch is None, verify + for all the branches """ + if branch not in self._entries or branch in self._verifiedbranches: + return + for n in self._entries[branch]: + if not self._hasnode(n): + _unknownnode(n) + + self._verifiedbranches.add(branch) + + def _verifyall(self): + """ verifies nodes of all the branches """ + for b in self._entries: + self._verifybranch(b) + def __iter__(self): return iter(self._entries)