master TOC | chapter TOC | support

discussion

problems with the old mirroring model

The old mirroring model had a single server as the master for all repositories. Slaves were effectively only for load-balancing reads, or for failover if the master died.

This is not good enough for corporate setups where the developers are spread fairly evenly across the world. Some repos need to be closer to some teams (NUMA is a good analogy).

A model where different repos are "mastered" in different cities is much more efficient here.

The old model had other rigidities too, though they're not really problems, as such:

the new mirroring model

In the new model, servers can be much more independent and autonomous than in the old model. (Don't miss the side note in the 'repository level setup' section if you prefer the old model).

The new model has a few pros and cons. The pros come from the flexibility and freedom that mirrors servers get, and the cons come from authorisation being more rigorously checked (for example, a slave will only accept a push if its configuration also says that the sending server is indeed the master for this repo).