The git vs svn permathread seems to have reignited at the ASF, and I thought I would describe some of my actual experiences with git in the hopes that it will help anchor the discussion.
The context: I’m co-author of a book on Rails. I have a vested interest in the scenarios described in that book continuing to work, so I wrote a few tests that I run against various combinations of Book editions, Rails releases, and Ruby versions.
From time to time, a test fails. One of the first things I typically do is run git bisect. All I need to do is to identify a good version, a bad version, and a test to run. Even if the test takes 2 minutes and there are 30 or so revisions between the good and bad points, I get an answer in about 10 minutes without needing to be further involved in determining where the problem is.
I mention it to a developer, and the first thing he does is place a comment on the the actual commit.
The next thing I do is build a smaller test case. I have a scenario that fails. I know a revision that it passes on. I whittle down the scenario to one that continue to fail with the same symptoms and passes on the known good revision. I post a comment on the same commit.
At this point, I have a small test and a commit that fails. I may not know the full Rails codebase, but the commit page shows what changed and I can make an educated guess as to what the problem is. I post my patch for all to see. I request that this patch be pulled. Within minutes it is, and the pull request is closed.
Can all of this be done using svn and JIRA? Absolutely. I’ve used
patch plenty of times. But compare that experience to going to a web page showing a list of commits, running git bisect, pushing a patch for all to see, and then clicking on
Are any of these features absolutely necessary? Well, no. I’m even aware that pieces are available like svn-bisect. But I can see how people that have gotten used to having everything integrated and at their fingertips feel like they are taking a step huge backwards when they migrate to an environment that doesn’t.