Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revlog.py @ 51084:09d60aed5f5d
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 | 15a50bfaeb79 |
children | 5ffee3cff8de |
comparison
equal
deleted
inserted
replaced
51083:15a50bfaeb79 | 51084:09d60aed5f5d |
---|---|
3459 delta_both_parents = ( | 3459 delta_both_parents = ( |
3460 forcedeltabothparents or old_delta_config.delta_both_parents | 3460 forcedeltabothparents or old_delta_config.delta_both_parents |
3461 ) | 3461 ) |
3462 destrevlog.delta_config.delta_both_parents = delta_both_parents | 3462 destrevlog.delta_config.delta_both_parents = delta_both_parents |
3463 | 3463 |
3464 with self.reading(): | 3464 with self.reading(), destrevlog._writing(tr): |
3465 self._clone( | 3465 self._clone( |
3466 tr, | 3466 tr, |
3467 destrevlog, | 3467 destrevlog, |
3468 addrevisioncb, | 3468 addrevisioncb, |
3469 deltareuse, | 3469 deltareuse, |
3550 (sidedata, new_flags) = sidedatautil.run_sidedata_helpers( | 3550 (sidedata, new_flags) = sidedatautil.run_sidedata_helpers( |
3551 self, sidedata_helpers, sidedata, rev | 3551 self, sidedata_helpers, sidedata, rev |
3552 ) | 3552 ) |
3553 flags = flags | new_flags[0] & ~new_flags[1] | 3553 flags = flags | new_flags[0] & ~new_flags[1] |
3554 | 3554 |
3555 with destrevlog._writing(tr): | 3555 destrevlog._addrevision( |
3556 destrevlog._addrevision( | 3556 node, |
3557 node, | 3557 rawtext, |
3558 rawtext, | 3558 tr, |
3559 tr, | 3559 linkrev, |
3560 linkrev, | 3560 p1, |
3561 p1, | 3561 p2, |
3562 p2, | 3562 flags, |
3563 flags, | 3563 cachedelta, |
3564 cachedelta, | 3564 deltacomputer=deltacomputer, |
3565 deltacomputer=deltacomputer, | 3565 sidedata=sidedata, |
3566 sidedata=sidedata, | 3566 ) |
3567 ) | |
3568 | 3567 |
3569 if addrevisioncb: | 3568 if addrevisioncb: |
3570 addrevisioncb(self, rev, node) | 3569 addrevisioncb(self, rev, node) |
3571 | 3570 |
3572 def censorrevision(self, tr, censornode, tombstone=b''): | 3571 def censorrevision(self, tr, censornode, tombstone=b''): |