[PATCH 0 of 9 phases] Basic phase movement patches

Pierre-Yves David pierre-yves.david at ens-lyon.org
Mon Nov 7 11:43:12 CST 2011


Here is 9 patches that implements basic phase movement:

* changeset committed locally are in 1-phase
* anything that exist elsewhere is 0-phase

The commit and push/pull have been grouped in the same series. Using roots make
"commit are 1-phase" and "pushed are 0-phase" use different code path and I
needed to test both.

Next series will be :

    phases: add a mutable boolean property on context
    phases: prevent rebase to rebase immutable changeset
    phases: prevent mq to qimport immutable change

    This series will require some hack in the test suite as most mq and rebase
    test start by pulling a bundle. (the hack will probably be rm
    .hg/store/phase-roots)

The series after will be:

    phases: add a phases.publish option
    phases: update exchange test to include node hash.
    phases: add basic pushkey support 
    phases: add a function to compute phase-heads from roots
    phases: exchange phase boundaries on pull
    phases: exchange phase boundaries on push

    This series will include some temporary hack for executin code inside the
    addchangegroup function depending of the caller. This would require a wider
    refactoring but I belive we better delay this refactoring until we
    implement phase hooks

I updated the StatePlan Page with though about hooks for phases. People
interrested in the topic will want to read it here:

http://mercurial.selenic.com/wiki/StatesPlan#Controlling_and_Hooking_on_phase_movement.


More information about the Mercurial-devel mailing list