I saw part of an interesting [1] video in which a YUI dev claimed that her productivity went up after switching from svn to git. YMMV.
For me, the advantages are:
- Distributed repositories
- At first, a central repo seems more appealing to a Project Manager, but eventually you may prefer the Integration Manager model which a DVCS facilitates. Also, a DVCS allows one to commit while offline.
- Private branches
- Keep your dirty laundry to yourself. With svn, many devs avoid frequent commits for this reason.
- Simpler branch-merging
- When it's easy, people do it.
- Rebasing
- The "killer" feature of git. (Also available in Mercurial.) Lets you consolidate groups of commits and pretend that you did them all after the most recent update.
- The
.git
directory- Very unobtrusive, unlike
CVS/
and.svn/
. Perforce is even worse, requiring a specific directory for the check-out. With git/hg/bzr/etc., you can version-control any sub-directory in your filesystem at any time, very easily, without setting up a central repo. I sometimes rungit init
inside a working area for Subversion, for a one-day project. Remember: With Subversion you cannot hide your dirty laundry.
- Very unobtrusive, unlike
- The "stash"
- Unique to git. Syntactic sugar for temporary branching.
- "rerere" (reuse recorded resolution)
- Pure magic. Caches merge-conflict resolution, so you never have to resolve manually the identical conflict again.
The biggest advantage of git over mercurial is the [3] index, which is the genius of Linus Torvalds (at least to recognize the value). Otherwise, mercurial is very good and in some ways better.
And what's the biggest disadvantage of git? Large files can make it really slow. With default settings, it's for source-code only. If you want to store big files in git, try git-annex, which even allows the files to be stored on remotes such as rsync, the web (RESTfully), or Amazon S3. Also consider git-media. I wouldn't bother with git-bigfiles.
"Generally the strength of perforce is given (by those that like perforce) as the fact that P4 does not scan the filesystem looking for changes, which makes it very very fast. Personally, I think it is one of its biggest weaknesses."
ReplyDelete-Eric M.