Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revlog.py @ 50792:315c74911993 stable
revlog: avoid opening and closing the file for each cloned revision
The previous code was flushing files after each new revision, slowing things
down.
For exemple, with this change, the evolve repository can run
`hg debugupgraderepo --run --optimize re-delta-parent` in about 3.4s instead of
4.5 seconds.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sat, 14 Oct 2023 03:24:13 +0200 |
parents | 2dec23658969 |
children | 98910135a3bc |
comparison
equal
deleted
inserted
replaced
50791:2dec23658969 | 50792:315c74911993 |
---|---|
3194 destrevlog._lazydeltabase = False | 3194 destrevlog._lazydeltabase = False |
3195 destrevlog._lazydelta = False | 3195 destrevlog._lazydelta = False |
3196 | 3196 |
3197 destrevlog._deltabothparents = forcedeltabothparents or oldamd | 3197 destrevlog._deltabothparents = forcedeltabothparents or oldamd |
3198 | 3198 |
3199 self._clone( | 3199 with self.reading(), destrevlog._writing(tr): |
3200 tr, | 3200 self._clone( |
3201 destrevlog, | 3201 tr, |
3202 addrevisioncb, | 3202 destrevlog, |
3203 deltareuse, | 3203 addrevisioncb, |
3204 forcedeltabothparents, | 3204 deltareuse, |
3205 sidedata_helpers, | 3205 forcedeltabothparents, |
3206 ) | 3206 sidedata_helpers, |
3207 ) | |
3207 | 3208 |
3208 finally: | 3209 finally: |
3209 destrevlog._lazydelta = oldlazydelta | 3210 destrevlog._lazydelta = oldlazydelta |
3210 destrevlog._lazydeltabase = oldlazydeltabase | 3211 destrevlog._lazydeltabase = oldlazydeltabase |
3211 destrevlog._deltabothparents = oldamd | 3212 destrevlog._deltabothparents = oldamd |
3286 (sidedata, new_flags) = sidedatautil.run_sidedata_helpers( | 3287 (sidedata, new_flags) = sidedatautil.run_sidedata_helpers( |
3287 self, sidedata_helpers, sidedata, rev | 3288 self, sidedata_helpers, sidedata, rev |
3288 ) | 3289 ) |
3289 flags = flags | new_flags[0] & ~new_flags[1] | 3290 flags = flags | new_flags[0] & ~new_flags[1] |
3290 | 3291 |
3291 with destrevlog._writing(tr): | 3292 destrevlog._addrevision( |
3292 destrevlog._addrevision( | 3293 node, |
3293 node, | 3294 rawtext, |
3294 rawtext, | 3295 tr, |
3295 tr, | 3296 linkrev, |
3296 linkrev, | 3297 p1, |
3297 p1, | 3298 p2, |
3298 p2, | 3299 flags, |
3299 flags, | 3300 cachedelta, |
3300 cachedelta, | 3301 deltacomputer=deltacomputer, |
3301 deltacomputer=deltacomputer, | 3302 sidedata=sidedata, |
3302 sidedata=sidedata, | 3303 ) |
3303 ) | |
3304 | 3304 |
3305 if addrevisioncb: | 3305 if addrevisioncb: |
3306 addrevisioncb(self, rev, node) | 3306 addrevisioncb(self, rev, node) |
3307 | 3307 |
3308 def censorrevision(self, tr, censornode, tombstone=b''): | 3308 def censorrevision(self, tr, censornode, tombstone=b''): |