comparison mercurial/revlog.py @ 42998:8a31294fa25c

upgrade: fix DELTAREUSEFULLADD implementation in revlog.clone If we do a full addition, we need to start from the full text. Differential Revision: https://phab.mercurial-scm.org/D6901
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 27 Sep 2019 13:16:37 +0200
parents 6510c7830838
children 188476e48f51
comparison
equal deleted inserted replaced
42997:6510c7830838 42998:8a31294fa25c
2435 2435
2436 # (Possibly) reuse the delta from the revlog if allowed and 2436 # (Possibly) reuse the delta from the revlog if allowed and
2437 # the revlog chunk is a delta. 2437 # the revlog chunk is a delta.
2438 cachedelta = None 2438 cachedelta = None
2439 rawtext = None 2439 rawtext = None
2440 if (deltareuse != self.DELTAREUSEFULLADD and destrevlog._lazydelta):
2441 dp = self.deltaparent(rev)
2442 if dp != nullrev:
2443 cachedelta = (dp, bytes(self._chunk(rev)))
2444
2445 if not cachedelta:
2446 rawtext = self.rawdata(rev)
2447
2448
2449 if deltareuse == self.DELTAREUSEFULLADD: 2440 if deltareuse == self.DELTAREUSEFULLADD:
2450 destrevlog.addrevision(rawtext, tr, linkrev, p1, p2, 2441 text = self.revision(rev)
2442 destrevlog.addrevision(text, tr, linkrev, p1, p2,
2451 cachedelta=cachedelta, 2443 cachedelta=cachedelta,
2452 node=node, flags=flags, 2444 node=node, flags=flags,
2453 deltacomputer=deltacomputer) 2445 deltacomputer=deltacomputer)
2454 else: 2446 else:
2447 if destrevlog._lazydelta:
2448 dp = self.deltaparent(rev)
2449 if dp != nullrev:
2450 cachedelta = (dp, bytes(self._chunk(rev)))
2451
2452 if not cachedelta:
2453 rawtext = self.rawdata(rev)
2454
2455 ifh = destrevlog.opener(destrevlog.indexfile, 'a+', 2455 ifh = destrevlog.opener(destrevlog.indexfile, 'a+',
2456 checkambig=False) 2456 checkambig=False)
2457 dfh = None 2457 dfh = None
2458 if not destrevlog._inline: 2458 if not destrevlog._inline:
2459 dfh = destrevlog.opener(destrevlog.datafile, 'a+') 2459 dfh = destrevlog.opener(destrevlog.datafile, 'a+')