Hi all !
On this article I’ll review GIT, Gerrit and GitHub. I wrote this because I wanted to make the best of my free time , to get to know some of the CM solutions out there. This analysis will just scratch the surface of each tool, so that in the future it can be used for a quick reference and compare.
What is it ?
GIT is a source code management tool(SCM) with a focus on speed. Coming in from the Linux world, it was initially designed and developed by Linus Torvals, but has since been adopted by many other projects.
How to use it ?
GIT represents a paradigm shift. It assumes that instead of being always committing to a centralized server, most of your commits will occur on your local machine and only at the end of your changes will you push your code to the main server. Also, unlike CVS and SVN, when using GIT you have all the code versions stored locally. Thus you can work offline and still have access to all previous version of code.
The picture below depicts the typical GIT code flow:
David, Alice, Bob and Clair will typically fetch the everything from the origin repository. Then they can work on their on local repository and also create their local branches. They will also be able to share the branches between themselves. We’re they’re done with the changes all left to do is push the code to the origin repository.
Does it scale ?
GIT uses a lot of essentially O(n) data structures, and when n gets big, there’s were problems come to surface. Anyway if you’re code base repository begins passing the physiological 1 GB barrier with lots of 20k files, you might start thinking if :
- Do you really need a single huge repository or can you break it down in many ?
- If you do need a huge repository, look into GIT protocol, as it allows for sparse checkouts and other options.
GIT is free to use, even in the enterprise. There is huge community of users and user forums using GIT, so you won’t stand alone. But if you wan’t to avoid most of the configuration hurdles and also use GIT in as integrated development framework you should give Github or Collabnet a try.
What is it ?
Gerrit is a code review and collaboration tool Google created as part of the Android open source project. It provides a way for code to be submitted, reviewed, approved/rejected, and merged into a larger collaborative work. All without having to expose your integration build code base to direct access from the contributors.
How to use it ?
Gerrit provides authentication and authorization services for a git repository, allowing authorized users to either push their changes directly into the repository, or to push them into a code review queue, where other developers can review changes before submitting the change into the master repository.
The picture below shows the fundamental difference between using just GIT and using GIT+Gerrit.
Developers still get to fetch code from a central repository, but instead of pushing the changes back to the same, repository, code will be pushed to a pending changes location, and only after review will it be submitted to the main repository.
Does it scale ?
Yes it does. The scaling process is well documented within the official gerrit home page.You may face some hurdles, but you can always browse the forums and look for solutions.
If you are looking for enterprise support, you might want to have a look at GerritForge which is a native GIT SCM adapter and in addition, it also interfaces with Jira, Teamforge, and IBM Rational Team Concert.
As some readers pointed out, it is unfair to compare these three tools and choose a favorite one as they all serve different purposes. Nevertheless I hope I have given you some insights about the three of them.
 GIT Local branching on the cheap ; About GIT ; http://git-scm.com/about
 Wikipedia; GIT software ; http://en.wikipedia.org/wiki/Git_(software)
 GITHub enterprise; Bring Github to work; https://enterprise.github.com/
 TeamForge for GIT; Central control for DVCS. Enterprise-grade security and compliance ;http://www.collab.net/products/teamforge/git-for-the-enterprise
 Hacker news; Facebook hits GIT performance issue on large repository ; https://news.ycombinator.com/item?id=3548824
 General development and mailing list for GIT; GIT performance results on a large repository ;http://comments.gmane.org/gmane.comp.version-control.git/189776
 Vincent Driessen ; A successful GIT branching model ; http://nvie.com/posts/a-successful-git-branching-model/
 Wikipedia ; Gerrit software ; http://en.wikipedia.org/wiki/Gerrit_(software)
 The University of Edinburgh- Informatics; Dice Labs : GIT and Gerrit ; http://www.not-a-service.inf.ed.ac.uk/services/git-and-gerrit
 Open stack Cloud Software ; Gerrit Code Review – Quick Introduction ; https://review.openstack.org/Documentation/intro-quick.html
 GerritForge ; Git and Gerrit for the enterprise ; http://www.gerritforge.com
 Wikipedia; GitHub ; http://en.wikipedia.org/wiki/GitHub