Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/branchmap.py @ 46793:6266d19556ad
node: introduce nodeconstants class
In preparing for moving from SHA1 hashes to a modern hash function,
place nullid and other constant magic vules in a class. Provide the
active set of constants in the repository and push it down. Provide
nullid directly in strategic places like the repository as it is
accessed very often. This changeset introduces the API change, but not
the mechanical replacement of the node.py attributes itself.
Differential Revision: https://phab.mercurial-scm.org/D9750
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Wed, 13 Jan 2021 16:14:58 +0100 |
parents | 3e91d9978bec |
children | e2f7b2695ba1 |
comparison
equal
deleted
inserted
replaced
46792:49fd21f32695 | 46793:6266d19556ad |
---|---|
95 bcache = self[subset].copy() | 95 bcache = self[subset].copy() |
96 extrarevs = subset.changelog.filteredrevs - cl.filteredrevs | 96 extrarevs = subset.changelog.filteredrevs - cl.filteredrevs |
97 revs.extend(r for r in extrarevs if r <= bcache.tiprev) | 97 revs.extend(r for r in extrarevs if r <= bcache.tiprev) |
98 else: | 98 else: |
99 # nothing to fall back on, start empty. | 99 # nothing to fall back on, start empty. |
100 bcache = branchcache() | 100 bcache = branchcache(repo) |
101 | 101 |
102 revs.extend(cl.revs(start=bcache.tiprev + 1)) | 102 revs.extend(cl.revs(start=bcache.tiprev + 1)) |
103 if revs: | 103 if revs: |
104 bcache.update(repo, revs) | 104 bcache.update(repo, revs) |
105 | 105 |
127 closed.add(h) | 127 closed.add(h) |
128 | 128 |
129 if rbheads: | 129 if rbheads: |
130 rtiprev = max((int(clrev(node)) for node in rbheads)) | 130 rtiprev = max((int(clrev(node)) for node in rbheads)) |
131 cache = branchcache( | 131 cache = branchcache( |
132 repo, | |
132 remotebranchmap, | 133 remotebranchmap, |
133 repo[rtiprev].node(), | 134 repo[rtiprev].node(), |
134 rtiprev, | 135 rtiprev, |
135 closednodes=closed, | 136 closednodes=closed, |
136 ) | 137 ) |
182 branch head closes a branch or not. | 183 branch head closes a branch or not. |
183 """ | 184 """ |
184 | 185 |
185 def __init__( | 186 def __init__( |
186 self, | 187 self, |
188 repo, | |
187 entries=(), | 189 entries=(), |
188 tipnode=nullid, | 190 tipnode=nullid, |
189 tiprev=nullrev, | 191 tiprev=nullrev, |
190 filteredhash=None, | 192 filteredhash=None, |
191 closednodes=None, | 193 closednodes=None, |
193 ): | 195 ): |
194 # type: (Union[Dict[bytes, List[bytes]], Iterable[Tuple[bytes, List[bytes]]]], bytes, int, Optional[bytes], Optional[Set[bytes]], Optional[Callable[[bytes], bool]]) -> None | 196 # type: (Union[Dict[bytes, List[bytes]], Iterable[Tuple[bytes, List[bytes]]]], bytes, int, Optional[bytes], Optional[Set[bytes]], Optional[Callable[[bytes], bool]]) -> None |
195 """hasnode is a function which can be used to verify whether changelog | 197 """hasnode is a function which can be used to verify whether changelog |
196 has a given node or not. If it's not provided, we assume that every node | 198 has a given node or not. If it's not provided, we assume that every node |
197 we have exists in changelog""" | 199 we have exists in changelog""" |
200 self._repo = repo | |
198 self.tipnode = tipnode | 201 self.tipnode = tipnode |
199 self.tiprev = tiprev | 202 self.tiprev = tiprev |
200 self.filteredhash = filteredhash | 203 self.filteredhash = filteredhash |
201 # closednodes is a set of nodes that close their branch. If the branch | 204 # closednodes is a set of nodes that close their branch. If the branch |
202 # cache has been updated, it may contain nodes that are no longer | 205 # cache has been updated, it may contain nodes that are no longer |
278 filteredhash = None | 281 filteredhash = None |
279 hasnode = repo.changelog.hasnode | 282 hasnode = repo.changelog.hasnode |
280 if len(cachekey) > 2: | 283 if len(cachekey) > 2: |
281 filteredhash = bin(cachekey[2]) | 284 filteredhash = bin(cachekey[2]) |
282 bcache = cls( | 285 bcache = cls( |
286 repo, | |
283 tipnode=last, | 287 tipnode=last, |
284 tiprev=lrev, | 288 tiprev=lrev, |
285 filteredhash=filteredhash, | 289 filteredhash=filteredhash, |
286 hasnode=hasnode, | 290 hasnode=hasnode, |
287 ) | 291 ) |
386 return pycompat.itervalues(self._entries) | 390 return pycompat.itervalues(self._entries) |
387 | 391 |
388 def copy(self): | 392 def copy(self): |
389 """return an deep copy of the branchcache object""" | 393 """return an deep copy of the branchcache object""" |
390 return type(self)( | 394 return type(self)( |
395 self._repo, | |
391 self._entries, | 396 self._entries, |
392 self.tipnode, | 397 self.tipnode, |
393 self.tiprev, | 398 self.tiprev, |
394 self.filteredhash, | 399 self.filteredhash, |
395 self._closednodes, | 400 self._closednodes, |