Mercurial > public > mercurial-scm > hg
comparison mercurial/revlog.py @ 39866:e23c03dc5cf9
revlog: drop emitrevisiondeltas() and associated functionality (API)
emitrevisions() is the future!
Differential Revision: https://phab.mercurial-scm.org/D4726
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 24 Sep 2018 09:59:19 -0700 |
parents | 5a9ab91e0a45 |
children | 14e500b58263 |
comparison
equal
deleted
inserted
replaced
39865:31b7e8e7132e | 39866:e23c03dc5cf9 |
---|---|
2292 res = [self.indexfile] | 2292 res = [self.indexfile] |
2293 if not self._inline: | 2293 if not self._inline: |
2294 res.append(self.datafile) | 2294 res.append(self.datafile) |
2295 return res | 2295 return res |
2296 | 2296 |
2297 def emitrevisiondeltas(self, requests): | |
2298 frev = self.rev | |
2299 | |
2300 prevrev = None | |
2301 for request in requests: | |
2302 node = request.node | |
2303 rev = frev(node) | |
2304 | |
2305 if prevrev is None: | |
2306 prevrev = self.index[rev][5] | |
2307 | |
2308 # Requesting a full revision. | |
2309 if request.basenode == nullid: | |
2310 baserev = nullrev | |
2311 # Requesting an explicit revision. | |
2312 elif request.basenode is not None: | |
2313 baserev = frev(request.basenode) | |
2314 # Allowing us to choose. | |
2315 else: | |
2316 p1rev, p2rev = self.parentrevs(rev) | |
2317 deltaparentrev = self.deltaparent(rev) | |
2318 | |
2319 # Avoid sending full revisions when delta parent is null. Pick | |
2320 # prev in that case. It's tempting to pick p1 in this case, as | |
2321 # p1 will be smaller in the common case. However, computing a | |
2322 # delta against p1 may require resolving the raw text of p1, | |
2323 # which could be expensive. The revlog caches should have prev | |
2324 # cached, meaning less CPU for delta generation. There is | |
2325 # likely room to add a flag and/or config option to control this | |
2326 # behavior. | |
2327 if deltaparentrev == nullrev and self._storedeltachains: | |
2328 baserev = prevrev | |
2329 | |
2330 # Revlog is configured to use full snapshot for a reason. | |
2331 # Stick to full snapshot. | |
2332 elif deltaparentrev == nullrev: | |
2333 baserev = nullrev | |
2334 | |
2335 # Pick previous when we can't be sure the base is available | |
2336 # on consumer. | |
2337 elif deltaparentrev not in (p1rev, p2rev, prevrev): | |
2338 baserev = prevrev | |
2339 else: | |
2340 baserev = deltaparentrev | |
2341 | |
2342 if baserev != nullrev and not self.candelta(baserev, rev): | |
2343 baserev = nullrev | |
2344 | |
2345 revision = None | |
2346 delta = None | |
2347 baserevisionsize = None | |
2348 | |
2349 if self.iscensored(baserev) or self.iscensored(rev): | |
2350 try: | |
2351 revision = self.revision(node, raw=True) | |
2352 except error.CensoredNodeError as e: | |
2353 revision = e.tombstone | |
2354 | |
2355 if baserev != nullrev: | |
2356 baserevisionsize = self.rawsize(baserev) | |
2357 | |
2358 elif baserev == nullrev: | |
2359 revision = self.revision(node, raw=True) | |
2360 else: | |
2361 delta = self.revdiff(baserev, rev) | |
2362 | |
2363 extraflags = REVIDX_ELLIPSIS if request.ellipsis else 0 | |
2364 | |
2365 yield revlogrevisiondelta( | |
2366 node=node, | |
2367 p1node=request.p1node, | |
2368 p2node=request.p2node, | |
2369 linknode=request.linknode, | |
2370 basenode=self.node(baserev), | |
2371 flags=self.flags(rev) | extraflags, | |
2372 baserevisionsize=baserevisionsize, | |
2373 revision=revision, | |
2374 delta=delta) | |
2375 | |
2376 prevrev = rev | |
2377 | |
2378 def emitrevisions(self, nodes, nodesorder=None, revisiondata=False, | 2297 def emitrevisions(self, nodes, nodesorder=None, revisiondata=False, |
2379 assumehaveparentrevisions=False, deltaprevious=False): | 2298 assumehaveparentrevisions=False, deltaprevious=False): |
2380 if nodesorder not in ('nodes', 'storage', None): | 2299 if nodesorder not in ('nodes', 'storage', None): |
2381 raise error.ProgrammingError('unhandled value for nodesorder: %s' % | 2300 raise error.ProgrammingError('unhandled value for nodesorder: %s' % |
2382 nodesorder) | 2301 nodesorder) |