Mercurial > hg
view tests/testlib/ext-phase-report.py @ 38128:1cba497491be
narrow: only wrap dirstate functions once, instead of per-reposetup
chg will call reposetup multiple times, and we would end up double-wrapping (or
worse) the dirstate functions; this can cause issues like OSError 'No such file
or directory' during rebase operations, when we go to double-delete our
narrowspec backup file.
Differential Revision: https://phab.mercurial-scm.org/D3559
author | Kyle Lippincott <spectral@google.com> |
---|---|
date | Wed, 16 May 2018 14:59:32 -0700 |
parents | 3b4d14beac3d |
children | 2372284d9457 |
line wrap: on
line source
# tiny extension to report phase changes during transaction from __future__ import absolute_import def reposetup(ui, repo): def reportphasemove(tr): for rev, move in sorted(tr.changes[b'phases'].items()): if move[0] is None: ui.write((b'test-debug-phase: new rev %d: x -> %d\n' % (rev, move[1]))) else: ui.write((b'test-debug-phase: move rev %d: %d -> %d\n' % (rev, move[0], move[1]))) class reportphaserepo(repo.__class__): def transaction(self, *args, **kwargs): tr = super(reportphaserepo, self).transaction(*args, **kwargs) tr.addpostclose(b'report-phase', reportphasemove) return tr repo.__class__ = reportphaserepo