If you're looking for corporate git, take a look at gerrit. I think it addresses many of the concerns raised below.
On 11/03/2012, at 13:38, David Weintraub <qazw...@gmail.com> wrote: > Git is not "better" than Subversion. Distributed version control is > not "better" than centralized version control. > > However, that doesn't mean that Subversion is better or that > centralized is better. It's all about circumstances. There are many > circumstances where Git excels. I use Git as my person version control > system, and I even have projects on GitHub (including several > Subversion hooks). Using Git is easier than using Subversion when I'm > the only one using it. No need for starting or stopping a Subversion > server. And, GitHub makes it ridiculously easy to share it. > > Git has another advantage too. I've had people who've downloaded my > work, made changes, then sent me -- via email, the Git patches. I can > review them, and then add them back into my GitHub repository. Git > makes it easy because everyone has a repository, and each repository > can accept patches from other repositories. So, if I find Git so > useful, why don't I introduce it to our corporate environments? > > Git has two main powers: Distributed repositories and a lackadaisical > attitude towards security. This works great for Linux. Torvalds only > has to accept changes from two or three people. Everyone else who > wants to contribute to Linux has to find a sponsor who will accept > their changes into their sponsor's repository. Those sponsors have > sponsors, and onwards to the official Linux repository. tens of > thousands of people might be making code changes in Linux, but all > Torvalds has to know are the two or three people he'll accept changes > from. It's a web of trust. > > Now, let's look at a typical corporate environment. With an open > source project, if tens of thousands of people have your source code, > it's a smashing success. If you're a bank, and tens of thousands of > people have access to the source of your trading algorithms, it's not > a success. You need a centralized security system. > > Let's look at how the corporate development works. There is one, and > only one repository that's official. All the desktop repos mean > nothing. All the shared team repos mean nothing. Unless it's in the > official corporate repository, it means nothing. > > That means Git's true strengths, it's easy attitude towards security, > and the power of its distributed repository are rendered null and > void. The true advantages it would have over a centralized system like > Subversion just don't matter. > > A long time ago, I was a ClearCase administrator. ClearCase uses the > idea of "streams" (branches really). Developers work on their private > "development stream", and then deliver (merge) their change onto the > "integration stream". It was the integration stream where builds would > take place. It's all the disadvantages of a centralized repository > system with all the disadvantages of a distributed repository system. > > My job as CM was mother hen. I would walk around and pester the > developers to commit their changes or rebase their stream (i.e. merge > the changes in the integration code into their branch). If I was > lucky, we would somehow avoid the merge hell that release dates > became. I had QA on my back because they would never have enough time > to actually test everything. > > My first job outside of ClearCase was at a shop with three dozen or so > developers all using CVS. How do they create developer branches? They > don't. Instead, they all work on the same mainline branch. In fact, > they rarely ever branches. Well, I thought, this wouldn't work. > > I was wrong. I never saw a development shop run so smoothly. > Developers took small bites in their changes. They were more careful > in what they were doing and how those change might affect other > developers. Come release time, QA had already tested almost all of the > changes. Instead, they pointed out the bugs that were patched. When it > was time to release the code, it was tested and there was little last > minute crunch. > > I suddenly realized what forcing everyone to work on a centralized > repository would do. It forced everyone to work together. It forced > people to communicate with each other. It forced developers to think > before they made any changes. And, that's why Subversion might be > better in a corporate environment. > > In fact, in some ways, Git is worse than ClearCase UCM. At least under > ClearCase UCM I could peek at the developer's work and know what to > expect when the "delivery" took place. It was in their own branch, but > it was accessible in the repository. With Git, I wouldn't even have > that. A developer might be working on a walloping change, and I have > no way of knowing until they present it three days before the release. > > Subversion is also simpler than Git. A public Git repository still > depends upon SSH for security which makes it harder to setup. With > Subversion, I can use Windows Active Directory. You know your Windows > account and password, you know your Subversion account and password. > If you are in the "development" Windows group, you have access to the > repository. > > Git requires a commit and a push to get your code into the main > repository. In Subversion, a simple commit does the trick. If you do a > "svn status", you know whether your code is in the main repository or > not. A "git status" doesn't. There have been too many "whoops" > occasions when someone thought they had submitted their change to the > main repository with Git but forgot. > > Git is just another tool in your toolbox - like a hammer. It can be > good to use sometime, but you can't treat everything like a nail. Git > isn't a miracle detergent that will get your clothes cleaner, make > your colors brighter and your whites even whiter. Let's look at what > you're asking: > > * All developers will have to be retrained on Git. > * All Jenkins jobs will have to be modified to use Git. > * You're going to have to convert your repositories from Subversion to Git. > * If you're using a defect tracking system, you'll have to modify that > to use Git. > * If you're using Maven, there are going to be some changes in your > pom.xml files. > > And all for what? Don't give me an evangelical list of advantages. > We're not saving souls. We're building software. What advantages will > Git offer at your company? What makes it so good that it's worth the > headaches that will accompany the change. > > I've done this before taking companies from ClearCase to Subversion, > but I was able to easily convince all the stakeholders of the > advantages. Ask yourself what problems Subversion presents and what > problems Git will solve. > > If the developers are happy with Subversion, and there aren't any > issues that Git will solve, then what are you trying to do? > > -- > David Weintraub > qazw...@gmail.com