[PATCH 0 of 6 REPHASE-VIEW] Phase exchange overpushkey
pierre-yves.david at logilab.fr
pierre-yves.david at logilab.fr
Wed Oct 26 12:56:24 UTC 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