mercurial/revlog.py
changeset 35345 6226668a7169
parent 34898 1bde8e8e5de0
child 35521 a0fab647a8f1
equal deleted inserted replaced
35344:8f3f8b8dbab7 35345:6226668a7169
  2262 
  2262 
  2263     DELTAREUSEALWAYS = 'always'
  2263     DELTAREUSEALWAYS = 'always'
  2264     DELTAREUSESAMEREVS = 'samerevs'
  2264     DELTAREUSESAMEREVS = 'samerevs'
  2265     DELTAREUSENEVER = 'never'
  2265     DELTAREUSENEVER = 'never'
  2266 
  2266 
  2267     DELTAREUSEALL = {'always', 'samerevs', 'never'}
  2267     DELTAREUSEFULLADD = 'fulladd'
       
  2268 
       
  2269     DELTAREUSEALL = {'always', 'samerevs', 'never', 'fulladd'}
  2268 
  2270 
  2269     def clone(self, tr, destrevlog, addrevisioncb=None,
  2271     def clone(self, tr, destrevlog, addrevisioncb=None,
  2270               deltareuse=DELTAREUSESAMEREVS, aggressivemergedeltas=None):
  2272               deltareuse=DELTAREUSESAMEREVS, aggressivemergedeltas=None):
  2271         """Copy this revlog to another, possibly with format changes.
  2273         """Copy this revlog to another, possibly with format changes.
  2272 
  2274 
  2353                         cachedelta = (dp, str(self._chunk(rev)))
  2355                         cachedelta = (dp, str(self._chunk(rev)))
  2354 
  2356 
  2355                 if not cachedelta:
  2357                 if not cachedelta:
  2356                     rawtext = self.revision(rev, raw=True)
  2358                     rawtext = self.revision(rev, raw=True)
  2357 
  2359 
  2358                 ifh = destrevlog.opener(destrevlog.indexfile, 'a+',
  2360 
  2359                                         checkambig=False)
  2361                 if deltareuse == self.DELTAREUSEFULLADD:
  2360                 dfh = None
  2362                     destrevlog.addrevision(rawtext, tr, linkrev, p1, p2,
  2361                 if not destrevlog._inline:
  2363                                            cachedelta=cachedelta,
  2362                     dfh = destrevlog.opener(destrevlog.datafile, 'a+')
  2364                                            node=node, flags=flags)
  2363                 try:
  2365                 else:
  2364                     destrevlog._addrevision(node, rawtext, tr, linkrev, p1, p2,
  2366                     ifh = destrevlog.opener(destrevlog.indexfile, 'a+',
  2365                                             flags, cachedelta, ifh, dfh)
  2367                                             checkambig=False)
  2366                 finally:
  2368                     dfh = None
  2367                     if dfh:
  2369                     if not destrevlog._inline:
  2368                         dfh.close()
  2370                         dfh = destrevlog.opener(destrevlog.datafile, 'a+')
  2369                     ifh.close()
  2371                     try:
       
  2372                         destrevlog._addrevision(node, rawtext, tr, linkrev, p1,
       
  2373                                                 p2, flags, cachedelta, ifh, dfh)
       
  2374                     finally:
       
  2375                         if dfh:
       
  2376                             dfh.close()
       
  2377                         ifh.close()
  2370 
  2378 
  2371                 if addrevisioncb:
  2379                 if addrevisioncb:
  2372                     addrevisioncb(self, rev, node)
  2380                     addrevisioncb(self, rev, node)
  2373         finally:
  2381         finally:
  2374             destrevlog._lazydeltabase = oldlazydeltabase
  2382             destrevlog._lazydeltabase = oldlazydeltabase