Few months ago, I moved from Toulouse to Singapore. As I continue to play with satellite images, I wanted to keep an access to the OTB repository and still participate to this open source project. It was also a good opportunity to move to a distributed source control system: sometimes, when you’re stranded in a plane/train/meeting, you really wish to have access to a full repository to do some clean work. Also, if the repository is behind a triple firewall with no possible outside access, this is not a really good way to encourage contributions…
Http access was required, no https, but simple plain http that can go through a proxy, both for reading and writing to the repository. Subversion is great but doesn’t offer this possibility (and can’t work when you’re off the net anyway). So here we were, having to set up a new repository system. Three solutions appeared to be available: git, bazaar and mercurial.
Bazaar looks a little bit newer to the landscape, so even if it seems very promising, we needed a stable solution with a broad support. So, out went bazaar (though I’ll definitely keep an eye on the project).
Then I was drawn to git. It is used for the linux kernel so the long term support is guaranteed. Experimented with it for 2 months, migrating the whole OTB repository, installing a http server access, etc. That was pretty good, but I find it very easy to get messed up with the multiple commands. Ok, I was more used to centralized VCS then. Another problem with git: at that time the support for Windows was scarce. And even if I don’t use Windows, the OTB library is available on Windows, some of the developers use Windows (I can see that the support is getting slowly better now). Out went git.
Then came mercurial. As it is used for mozilla, the wide support is also pretty guaranteed. After git, it seems really user friendly, setting up the repository, migrating from subversion, etc, was straightforward. After 6 months of using it extensively, it is pretty good and I didn’t really find any shortcoming (though I sometimes regret the great presentation of the modified files of git when you do an update). The other great stuff about mercurial is that it is in python so it’s pretty easy to write small script to do automatic stuffs.