25th December 2008
One of my projects – COTRASIF – has grown complex enough to necessitate the use of version control system (VCS).
The most frequently mentioned is definitely SVN (SubVersion).
However, with a characteristic scrupulosity, I decided to run my own comparison of the available tools. I had a look at Darcs, Mercurial, SVN, and Git. Of these, only SVN is not a distributed VCS (but there is SVN addon which adds distributed features to SVN). Unfortunately, I didn’t take any notes during comparison, so there will be no details on how the choice narrowed down to Mercurial vs Git. These dVCSs are quite similar, with the following major differences: Mercurial is better documented and (much?) easier to use than Git; Git is more feature-rich, and Git currently has more add-on modules. Here the differences almost end. I decided that learning curves never were an obstacle, so Git is currently my first distributed VCS of choice (please note: I’ve never before used any version-control systems).
After choosing Git, I had to install Git central repository on a server. (Yes, Git is distributed, but central repository on the always-on server is a convenience worth the trouble; and again, this adds yet another backup copy.)
This is a collection of resources I found useful when setting up my Git repository:
- Hosting Git repositories, easy and secure way (note: do not create the user manually, installation of gitosis package does that for you automagically).
- Setting up Git repository on Dreamhost.
- gitosis: how to add new repository
Some more resources on how to use Git:
- Git user manual
- Git guide
- Git recipes (branching and merging in examples)
- everyday Git with 20 commands
- version control with git – tutorial
Git is simple enough to get started in minutes. So far I had only used clone/push/pull/commit/gc commands, but I’m familiar with tag/branch/checkout commands. The drawback of insufficient documentation (as mentioned above) isn’t really a problem now. I’m not using any GUIs for git (as sometimes I’m working on a remote server via ssh), but of the three locally tried GUIs I liked gitk the most; both git-gui and qgit feel less convenient than gitk, but are approximately equal. I wish I had some SVN/Mercurial/Darcs experience to be able to recommend Git – but I don’t have that