At what point does the push model degrade?

Bryan O'Sullivan bos at serpentine.com
Fri Nov 16 11:38:32 CST 2007


Ezra.Smith at bentley.com wrote:

> We're looking to change over to Mercurial because we like a lot of the
> benefits. But we're suffering from a "last mile" problem. Most of the
> plan is obvious to us, but we're not entirely sure how to maintain our
> central repository (note: we definitely do need one).

Having a central repository is not a problem.  You're very likely to run 
into problems if you let everyone push to that single central 
repository, though.

If someone finds that their push is blocked by a need to pull and merge 
first, and you have a sufficiently large number of users, there's a high 
likelihood that any given user will finish a merge and find that they've 
lost a race against someone else, and so have to merge again before they 
can push.

This problem isn't unique to Mercurial: any revision control system 
where you have a lot of people working out of the same tree will 
encounter the same problem.

One simple solution is to have teams of five or ten people for which one 
integrator is responsible for pulling their changes together and getting 
them upstream.  Again, this upstreaming will proceed most smoothly by 
having someone pull changes from these integrators.  By using a pull 
model instead of a push model, you're avoiding the problem of races and 
unnecessary repeated merges.

Also, by putting the responsibility for merges in fewer (preferably more 
experienced) people's hands, you have fewer possible points of failure 
when tricky merges occur.  You can also choose whose work should get 
pulled, and when, instead of having a less controlled scramble.

	<b


More information about the Mercurial mailing list