Friday 29 November 2013

Distributed Git

I am a big fan of Continuous Integration (CI), and the simple, elegant & light-weight approach to Configuration Management that it encourages:

Valid configurations of the system are defined by the revisions that live in the repository that is downstream from the CI quality-gate. No other configuration management is required than that defined by the repository state.

However, this reliance on the repository has consequences: The repository (ideally) holds everything that the system depends on, or stores configuration information at the very least.

This means big repositories.

Now, Git is a fantastic tool, it is terrifically flexible, and you can build all sorts of fantastic build-systems with it, but it is difficult to get to grips with, the user interface is appalling, and it suffers from one really really significant drawback: 

Git does not like large repositories.

Can we fix this? Perhaps by making Git a distributed tool?