[PATCH 0 of 6 REPHASE-VIEW] Phase exchange overpushkey

pierre-yves.david at logilab.fr pierre-yves.david at logilab.fr
Wed Oct 26 07:56:24 CDT 2011

Here is a series that add the phase.publish option and the ability to exchange
phase boundary on pull and push. Please see the 4 notes bellow before reading
the series

(1) Listing remote phases roots instead of phases heads is much more efficient.
    however using heads help other operation (as moving heads forward including
    during push). I'll keep storing heads and computing root when necessary
    until all usecase are written down. I may later decide to store root and
    computes heads when necessary.

(2) Boundary are pushed nodes by nodes, this seems quite inefficient and pretty
    bad transaction wise and hook executed when pushing to node N can't abort
    push of N-1 node.

(3) The addchangegroup method takign ownership of the transaction lock making is
    complicated to execution phase code before the transaction is release but
    after changeset have been made avaible. As the phase code needs several
    variable only avaible for the context that call addchangegroup, my current
    workaround build closure in calling context to be used by addchangegroup.
    This will get worse once we have afterphasemove hooks

(4) With the new peers code for wireprotocols, I did not find a way to handle
    phase movement in the same transaction that addchangegroup. This seems
    pretty bad.

More information about the Mercurial-devel mailing list