Last week I attended the June Chicago ALT.NET meeting, where Git was presented. When listening to the discussion, I kept notes on how Git compares to SVN (our current source control at work) and whether Git might be a viable replacement for SVN down the road.
- Allows you to work offline.
- Gives each user the whole repository, so most operations are local and therefore faster.
- Easily facilitates concurrent development cycles, so developers can work on different projects at different times without complicated branches (you still have branches, but they’re much easier to work with).
- Has support for hooks.
- Saves disk space in comparison to SVN. For example, the Mozilla repository was drastically smaller after switching to Git.
- Has better history tracking than SVN.
- Has GUI options – TortoiseGit and Git Extensions.
- Has a staging area that allows you to stage portions of a file before committing (so if you mess something up, you don’t have to revert the entire file and start over).
- Supports a variety of workflows. You could set up your distribution layout so you have one central repository that everyone pushes to, similar to SVN. However, I found the “benevolent dictator” model used by the Linux kernel development community interesting. Basically, developers would push their changes to lead developers, who would then push all of their changes to the architect/boss, who would then do the commit to the main source. All developers would then get latest from this main source.
I’m definitely interested in Git, and it looks like it a promising replacement for SVN. I think I’ll try using it for some of my personal work to get a better feel for it.
Lastly, some links I’m looking at: