# HG changeset patch # User Martin von Zweigbergk # Date 1555692099 25200 # Node ID d314deb12f08ac3dfcd799b4fcd534dfe7f96aba # Parent 6c3f4cfa582e02b8228120aa7de35f64ca3c200d evolve: run in a single transaction This speeds up `hg evolve --all` of a stack of 24 commits in the hg repo from 11.5s to 3.7s (3x). As can be seen in the tests, it also avoid some warnings about transiently unstable commits. diff -r 6c3f4cfa582e -r d314deb12f08 CHANGELOG --- a/CHANGELOG Fri Apr 19 10:01:32 2019 -0700 +++ b/CHANGELOG Fri Apr 19 09:41:39 2019 -0700 @@ -11,6 +11,7 @@ * evolve: drop compatibility with 4.4 * evolve: reinstalled compatibility with narrow repositories, * evolve: use "unstable" instead of "troubled" + * evolve: run multiple stabilisation in the same transaction 8.5.1 -- 2019-04-23 ------------------- diff -r 6c3f4cfa582e -r d314deb12f08 hgext3rd/evolve/evolvecmd.py --- a/hgext3rd/evolve/evolvecmd.py Fri Apr 19 10:01:32 2019 -0700 +++ b/hgext3rd/evolve/evolvecmd.py Fri Apr 19 09:41:39 2019 -0700 @@ -1723,11 +1723,15 @@ lastsolved = None activetopic = getattr(repo, 'currenttopic', '') - for rev in revs: - lastsolved = _solveonerev(ui, repo, rev, evolvestate, activetopic, - dryrunopt, confirmopt, progresscb, - targetcat, lastsolved) - seen += 1 + with repo.wlock(), repo.lock(): + tr = repo.transaction("evolve") + with util.acceptintervention(tr): + for rev in revs: + lastsolved = _solveonerev(ui, repo, rev, evolvestate, + activetopic, dryrunopt, + confirmopt, progresscb, + targetcat, lastsolved) + seen += 1 if showprogress: compat.progress(ui, _('evolve'), None) diff -r 6c3f4cfa582e -r d314deb12f08 tests/test-evolve-content-divergent-stack.t --- a/tests/test-evolve-content-divergent-stack.t Fri Apr 19 10:01:32 2019 -0700 +++ b/tests/test-evolve-content-divergent-stack.t Fri Apr 19 09:41:39 2019 -0700 @@ -145,7 +145,6 @@ base: [1] added a merging "other" content-divergent changeset '82b74d5dc678' 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - 6 new orphan changesets merge:[6] added b with: [10] added b base: [2] added b @@ -322,7 +321,6 @@ updating to "local" side of the conflict: c04ff147ef79 merging "other" content-divergent changeset '186bdc2cdfa2' 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - 6 new orphan changesets merge:[11] added b with: [6] added b base: [2] added b diff -r 6c3f4cfa582e -r d314deb12f08 tests/test-evolve-phase-divergence.t --- a/tests/test-evolve-phase-divergence.t Fri Apr 19 10:01:32 2019 -0700 +++ b/tests/test-evolve-phase-divergence.t Fri Apr 19 09:41:39 2019 -0700 @@ -997,7 +997,6 @@ recreate:[2] added m atop:[1] added m and n committed as 86419909e017 - 1 new orphan changesets recreate:[3] added n atop:[1] added m and n rebasing to destination parent: d3873e73d99e @@ -1258,7 +1257,6 @@ recreate:[2] added m atop:[1] added m and n committed as 86419909e017 - 1 new orphan changesets recreate:[4] added n atop:[1] added m and n rebasing to destination parent: d3873e73d99e diff -r 6c3f4cfa582e -r d314deb12f08 tests/test-evolve-progress.t --- a/tests/test-evolve-progress.t Fri Apr 19 10:01:32 2019 -0700 +++ b/tests/test-evolve-progress.t Fri Apr 19 09:41:39 2019 -0700 @@ -38,8 +38,6 @@ a committing manifest committing changelog - updating the branch cache - obscache is out of date evolve: 2/3 changesets (66.67%) move:[2] third hg rebase -r 769574b07a96 -d 5f16d91ecde0 @@ -56,8 +54,6 @@ b committing manifest committing changelog - updating the branch cache - obscache is out of date evolve: 3/3 changesets (100.00%) move:[3] fourth hg rebase -r 22782fddc0ab -d 53c0008d98a0 diff -r 6c3f4cfa582e -r d314deb12f08 tests/test-evolve-public-content-divergent-corner-cases.t --- a/tests/test-evolve-public-content-divergent-corner-cases.t Fri Apr 19 10:01:32 2019 -0700 +++ b/tests/test-evolve-public-content-divergent-corner-cases.t Fri Apr 19 09:41:39 2019 -0700 @@ -643,7 +643,6 @@ merging "other" content-divergent changeset '0773642cfa95' 0 files updated, 0 files merged, 0 files removed, 0 files unresolved content divergence resolution between c7d2d47c7240 (public) and 0773642cfa95 has same content as c7d2d47c7240, discarding 0773642cfa95 - 1 new orphan changesets merge:[8] c_F with: [10] c_F base: [6] c_F