[PATCH 6 of 9 phases] phase: Add a method to compute rich phase data for dirstate
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Wed Jan 4 19:25:43 CST 2012
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1325726360 -3600
# Node ID 14124d106c8873e80ffcdb8e3332f277e53534dc
# Parent 9bedf170a2c4753b01296db5f8dc8141cd3a64ed
phase: Add a method to compute rich phase data for dirstate
This method gather all logic related to new commit phase selection:
* default new commit phase
* parent phase
* dirstate phase
diff --git a/mercurial/phases.py b/mercurial/phases.py
--- a/mercurial/phases.py
+++ b/mercurial/phases.py
@@ -281,3 +281,28 @@
phaseheads[phase].extend(c.node() for c in revset)
return phaseheads, phaseroots
+def dirstatephase(repo):
+ """return (phase, from) tuple
+
+ phase: a valid phase integer,
+ from: how the value was computed
+ - 'default': current default for new commit,
+ - 'parents': inherited from parent,
+ - 'dirstate': read from dirstate,
+ - 'forced': forced from dirstate content."""
+ phase, force = repo.dirstate.phasedata
+ if force:
+ pfrom = 'forced'
+ else:
+ if phase is None:
+ # get default phase
+ phase = repo.ui.configint('phases', 'new-commit', draft)
+ pfrom = 'default'
+ else:
+ pfrom = 'dirstate'
+ for parent in repo[None].parents():
+ pphase = parent.phase()
+ if pphase >= phase:
+ pfrom = 'parents'
+ phase = pphase
+ return phase, pfrom
More information about the Mercurial-devel
mailing list