I recently attended a presentation on GIT, the free & open source, distributed version control system. I have to admit I was blown away by the power of GIT. From the get go after a user installs GIT they have in their working directory a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server.
One of the aspects of GIT that probably has impressed me the most is the various deployment models that are available to the user. In classic version control systems such as ClearCase there is what can called a “sea saw” approach meaning that a user A checks in code code to a central repository and the User B must update and download the changes from the central responsibility and vice versa. GIT offers a different approach partially because it is distributed. Each user hosts their own repository. Users can directly connect to other developers repositories without the need of a central repository.
Many open source projects use a model where developers can download code from a central repository. On their local environments they can commit their changes and it is version controlled on their own machines. Once a user is comfortable with their changes they can push it back to a central server where a group of administrators can pick and choose code from the various submissions and then push code up to another controlled repository. Then a smaller group of administrators can pick and choose the code which they can then push to a production repository.
Another cool feature in GIT is called “Stashing”. Stashing allows developers to stash away code changes and comeback to them later. This is particularly useful if you were currently working on some new feature but you have stop development to fix some issue. Normally the process would be to copy and paste the effected files into a folder and undo a hijack, fix the bug and merge the changes in later. Stashing automates this process and even merges in the changes from the bug fix.
Overall GIT seems powerful, full featured, easy to use and appears to provide more options to developers. Most classic version control systems like SVN and ClearCase do not empower developers to check in code for fear of breaking the build but GIT appears to provide the opposite effect.
You can download GIT here.
