Home - Search - Site Map - Site Graph   |  Contact  

( Last Modified: 2008 October 19th 09:48 AM)

Git Acclamation

(Why the design of Git is ahead of current source control applications)

There are many really innovative designs Git, but all I want to focus on here a things that I believe are "next generation" features. Ones that will need to be a part of any SCM in the future that wants to be used, regarless of its other design choices, (distributed, centralized etc...)

Table of Contents

Primary Advantages

Not Managed by File

Git sees the source tree as a whole, previous SCMs use individual files as unit of history, and used delta encoding between them to save space.

Where this becomes a problem though is when renaming files. Or splitting one file into two new ones, or merging two files into one etc.

So by not being limited to file boundaries git can track datas complete history no matter what files it was in previously in. As well as using delta encoding accross all data giving the repository even better compression.

Prominence given to Merging

Git was written with the assumtion that changes would be merged more often than they would be written. Git seem to be on the front line of ease of merging and mergin g speed. While other SCMs since CVS have made it easier to branch and have bragged of such ability, few have tackled merging. Arguably where the real difficuly lies.

One of Gits merging features is to save the merge history. For one this means changes won't be merge twice. A really nice example is exponded here:

http://blog.jrock.us/articles/Git%20merging%20by%20example.pod

Secondary Advantages

Compression (Very Small Repository size)

Because Git can match strings from anywhere in the repository not just the current files history (see Not Managed by File) the compressing can be much greater. Git seems to be one of the smallest repositories.
An example of this is the Mozilla repository:

"The Mozilla project's CVS repository is about 3 GB; it's about 12 GB in Subversion's fsfs format. In Git it's around 300 MB."
- http://git.or.cz/gitwiki/GitSvnComparsion

( Page Created: 2008 October 19th 09:48 AM)