annotate tests/testlib/ext-phase-report.py @ 40417:49c7b701fdc2 stable

phase: add an archived phase This phase allows for hidden changesets in the "user space". It differs from the "internal" phase which is intended for internal by-product only. There have been discussions at the 4.8 sprint to use such phase to speedup cleanup after history rewriting operation. Shipping it in the same release as the 'internal-phase' groups the associated `requires` entry. The important bit is to have support for this phase in the earliest version of mercurial possible. Adding the UI to manipulate this new phase later seems fine. The current plan for archived usage and user interface are as follow. On a repository with internal-phase on and evolution off: * history rewriting command set rewritten changeset in the archived phase. (This mean updating the cleanupnodes method). * keep `hg unbundle .hg/strip-backup/X.hg` as a way to restore changeset for now (backup bundle need to contains phase data) * [maybe] add a `hg strip --soft` advance flag (a light way to expose the feature without getting in the way of a better UI) Mercurial 4.8 freeze is too close to get the above in by then. We don't introduce a new repository `requirement` as we reuse the one introduced with the 'archived' phase during the 4.8 cycle.
author Boris Feld <boris.feld@octobus.net>
date Wed, 17 Oct 2018 14:47:01 +0200
parents 3b4d14beac3d
children 2372284d9457
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
33459
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
1 # tiny extension to report phase changes during transaction
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
2
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
3 from __future__ import absolute_import
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
4
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
5 def reposetup(ui, repo):
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
6
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
7 def reportphasemove(tr):
36044
3b4d14beac3d py3: port ext-phase-report.py extension
Gregory Szorc <gregory.szorc@gmail.com>
parents: 33459
diff changeset
8 for rev, move in sorted(tr.changes[b'phases'].items()):
33459
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
9 if move[0] is None:
36044
3b4d14beac3d py3: port ext-phase-report.py extension
Gregory Szorc <gregory.szorc@gmail.com>
parents: 33459
diff changeset
10 ui.write((b'test-debug-phase: new rev %d: x -> %d\n'
33459
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
11 % (rev, move[1])))
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
12 else:
36044
3b4d14beac3d py3: port ext-phase-report.py extension
Gregory Szorc <gregory.szorc@gmail.com>
parents: 33459
diff changeset
13 ui.write((b'test-debug-phase: move rev %d: %d -> %d\n'
33459
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
14 % (rev, move[0], move[1])))
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
15
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
16 class reportphaserepo(repo.__class__):
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
17 def transaction(self, *args, **kwargs):
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
18 tr = super(reportphaserepo, self).transaction(*args, **kwargs)
36044
3b4d14beac3d py3: port ext-phase-report.py extension
Gregory Szorc <gregory.szorc@gmail.com>
parents: 33459
diff changeset
19 tr.addpostclose(b'report-phase', reportphasemove)
33459
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
20 return tr
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
21
67a3204c83c1 phases: test phases tracking at the transaction level
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
22 repo.__class__ = reportphaserepo