Imagine you have a friend on the phone (not VoIP) who asks: "What's so special about Git? I'm fine using Subversion." What would be your "elevator pitch" in order to describe the advantage of using a DVCS like Git?
For me, one of the main things you can do in a DVCS like git that doesn't work well in SVN is the following:
1) Create several development branches off of trunk for various features that are under development.
2) Merge code from one feature branch into another feature branch before either feature branch is finished and ready to be merged into trunk.
3) Later, merge the feature branches into trunk.
It's nice to break new features off into separate branches so that trunk stays clean until the features are finished. But, inevitably you run into a situation where a team working on one feature branch has written some code that is needed by a team on another feature branch. If you merge this code across feature branches with SVN, you'll have trouble merging into trunk later on. Git avoids this problem.
Here's another benefit... Your company decides to outsource development of a feature to an Indian contracting company. Or, your Professional Services group needs to add a feature for a customer, and that feature may be productized in the future. You really don't want to give write access to your SVN to the Indian contractor or your PS group. So, they have to build the code outside of source control, and you have to merge it in yourself, detecting and resolving any conflicts yourself without any help from SVN, and losing all of the contractors' check-in history in the process.
But with git, you just give the contractor or your PS group a copy of the repository, and they can commit to it just like a developer. Later, you can use git's features to merge the changes back into your git repository. Git will find the conflicts, and it will preserve history.
Finally, one of the coolest things about git is that you really don't have to convince your friend that it's better than SVN. Because git integrates so well with SVN, your company/friend can happily use SVN while you happily use a git connected to the SVN.
There was already a question similar to this. Also, Eric Sink had a number of articles about DVCS. Both the answers to the other question and the articles may help to build an informed decision. Simply saying that one is better over the other is probably not going to help (Sadly, that seems to be all that Linus does in that respect, which doesn't really help to convince people—at least not me :)).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With