As our code repositories for Thousand Parsec where down anyway (because of the host being compromised), we decided to do something we had been thinking about for a while. We converted all our code repositories to git.
We had previously been using darcs, however the unbounded memory usage was getting out of hand. The straw which broke the camel’s back was when nash couldn’t even checkout the web repository because darcs kept getting killed by the Out of Memory Manager (on a machine which has more then 512Mb of RAM).
After much discussion we decided to move to git. The biggest reason we choose to use git was that we didn’t want to get stuck with another non-mainstream SCM system. With large people like Xorg, the Linux Kernel and many others, I’m pretty sure git will become the SCM of choice in the near future.
As I had previously had a large amount of experience converting the darcs repositories to subversion (for our mirrors), I was put in charge of converting the repositories to git. As previously, I used Tailor.
The first problem is that darcs has git repository support. The suppose solution to this is using disjunct working directories. However, git did not appear to like this, I need to hack up the source code to get it to work. I’ve submitted the patches back the Tailor repository and they have already been included!
Another problem I ran into was that I don’t have a machine which has enough memory to convert the web repository! I don’t have a computer with more then 768mb of ram (feel free to send me some more if you want! :P). Luckily thanks to the Summer of Code, a student who goes by the name cherez (who I was very disappointed we didn’t have enough slots to select) gave me a shell account on his machine with 4Gb of Ram.
As a result of converting to git, I was also able to merge the development and stable branches (of both tpclient-pywx and libtpclient-py) into one repository. This was a little bit trickier then I would have liked, it involved finding the branch point manually and then telling tailor about it, in the end it worked out. You can find a copy of the config I used for branching here.
You can see the results of our conversion at our gitweb.
I have to say, I’m amazed by git. Every single operation is very, very fast, I guess it’s why they called themselves “Git - Fast Version Control System”. Another thing that amazes me is the size of the repositories, under darcs our repositories where about 4Gb, with git they are around 200Mb! Overall, I’m happy with our choice.
{ 4 } Comments
Nice, another revision system to learn
Can’t hurt to know a couple of them. Darcs was also hurting my poor laptop, from tim to time it started to use so much swap that all started to go very slow and I had to restart the laptop. It is also nice to see that Git is so space efficient and probably it is also more supported by various web services like ohloh. All in all I think switching to Git was the right thing to do.
The RCS page has been updated to help you with learning git.
Hopefully that page will get even better over the next few days.
Thanks to git-cvsserver, we also have a bi-directional commit access via all CVS tools.
Thank you for you nice comments about Tailor. I tried to access to the configuration, but the URL is wrong. I’d like to hear any proposal about making the process “less tricky”, even if I’m afraid its almost impossible to cover every single situation…
ciao, lele.
I’m afraid that I lost the scripts when this blog moved around a bit (after the original server got hacked).
I also have not used Tailor in about a year now as we have been very happy with git (and the git-cvsserver gives us all the compatibility we need). If I ever need to move repository formats again, I may relook into the tool.
Thanks for taking the time to comment on my blog! It’s really cool to know that Tailor is still making progress and trying to be even easier to use.
Post a Comment