mercurial/branchmap.py
changeset 42120 2f8147521e59
parent 42113 f0def07fa82f
child 42121 6578654916ae
equal deleted inserted replaced
42119:2d428b859282 42120:2f8147521e59
   124                     return
   124                     return
   125 
   125 
   126     def clear(self):
   126     def clear(self):
   127         self._per_filter.clear()
   127         self._per_filter.clear()
   128 
   128 
       
   129 def _unknownnode(node):
       
   130     """ raises ValueError when branchcache found a node which does not exists
       
   131     """
       
   132     raise ValueError(r'node %s does not exist' % pycompat.sysstr(hex(node)))
   129 
   133 
   130 class branchcache(object):
   134 class branchcache(object):
   131     """A dict like object that hold branches heads cache.
   135     """A dict like object that hold branches heads cache.
   132 
   136 
   133     This cache is used to avoid costly computations to determine all the
   137     This cache is used to avoid costly computations to determine all the
   170         # branches for which nodes are verified
   174         # branches for which nodes are verified
   171         self._verifiedbranches = set()
   175         self._verifiedbranches = set()
   172         self._hasnode = hasnode
   176         self._hasnode = hasnode
   173         if self._hasnode is None:
   177         if self._hasnode is None:
   174             self._hasnode = lambda x: True
   178             self._hasnode = lambda x: True
       
   179 
       
   180     def _verifyclosed(self):
       
   181         """ verify the closed nodes we have """
       
   182         if self._closedverified:
       
   183             return
       
   184         for node in self._closednodes:
       
   185             if not self._hasnode(node):
       
   186                 _unknownnode(node)
       
   187 
       
   188         self._closedverified = True
       
   189 
       
   190     def _verifybranch(self, branch):
       
   191         """ verify head nodes for the given branch. If branch is None, verify
       
   192         for all the branches """
       
   193         if branch not in self._entries or branch in self._verifiedbranches:
       
   194             return
       
   195         for n in self._entries[branch]:
       
   196             if not self._hasnode(n):
       
   197                 _unknownnode(n)
       
   198 
       
   199         self._verifiedbranches.add(branch)
       
   200 
       
   201     def _verifyall(self):
       
   202         """ verifies nodes of all the branches """
       
   203         for b in self._entries:
       
   204             self._verifybranch(b)
   175 
   205 
   176     def __iter__(self):
   206     def __iter__(self):
   177         return iter(self._entries)
   207         return iter(self._entries)
   178 
   208 
   179     def __setitem__(self, key, value):
   209     def __setitem__(self, key, value):