BitKeeper - why is it so great?

The announcement about BitMover no longer offers kernel developers to use BitKeeper as their version control tool. Some of the reason have been that Tridgell (The guy behind the excellent product Samba) have tried to reverse engineer the binary protocol used by BitKeeper. So Linus wasn't too happy about this. While others think that Linus should cool it.

Linus doesn't seem to even consider using Subversion. The Subversion team have commented on this issue - explaining why Subversion isn't kernel developers right choice. So the question is - is it the Linux kernel development model that makes BitKeeper so great, or would other projects also benefit from using BitKeeper? Personally I've only used CVS, Subversion (currently using), SourceSafe and ClearCase. My company have bought Accurev, but I haven't been in a project using it.

My experience with ClearCase it that it seems to require a person working full time on ClearCase in order to get it to give the benefits that companies have paid big bucks for. My former employer used ClearCase, but as a developer I never saw the big benefit. We actually struggled stabilizing the ClearCase server. I've also tried ClearCase UCM, but never really liked all the steps involved. Might just be the way Rational have implemented UCM. Could have been interesting to try a different product focusing on the UCM concept.

So are there any Java developers out there that have used BitKeeper? Would non-Linux-kernel developers also benefit from using this product? If so - why?


Keith Lea said...

I haven't used BK, but from what I've read, I think the major difference is that with bitkeeper, there is no central server. All source changes are made by submitting patches to other members. I don't know if this is true, it's only the impression I got.

Anonymous said...

Arch is distrubuted, why not Arch? From what I've read, the easy ability to pick what to merge was what Linus appreciated about BK, dunno if Arch has that capability.

Buy Levitra said...

Great article! Thanks.

Phentermine said...

Thanks for interesting article.

Anonimous said...

Excellent website. Good work. Very useful. I will bookmark!

gcpeters said...

I know this a very old thread, but I'd like to comment in the event that someone else runs across it in the future.

I used BitKeeper while at Careerbuilder.com and we had several development teams working on various .net application assemblies, some core/shared across all teams and some specific to their application.

We started off with VSS while doing ASP development but then switched during the .NET migration. The Vault was looked at and it was horrible. I believe others were considered, but in the end, the only tool that worked very smoothly and nicely was BitKeeper.

You do not have to have a centralized server, however you typically have a repository that you consider your "Master/Golden" version. It's where all the other repositories "clone" from. You can clone directly from the Master (provided you are granted to do so) or you can clone from you Application Lead/Master Repository for your Team. You can clone as many times as you want and the beauty is that BitKeeper keeps track of everything. You can be on an airplane and clone from your local repository to quickly make a new beta build or try something new. If you don't like it, just delete the clone and do it again if you'd like.

The key to BitKeeper is to understand that by itself, it's not the complete solution. You must understand how your business deploys / distributes code/hotfixes/QA builds, etc... Knowing that, BitKeeper makes it EXTREMELY easy to glue it all together and provide for a very reliable Change Management tool that helps prevent you from "forgetting" to check in a piece of code or add a new one to the repository. BitKeeper will alert you of those and ask if you want them to participate in the current changeset. If not, no worries, your work in progress won't impact the up-stream repositories.

It's a beautiful product. The people at BitMover are very nice to work with and even though most say that the licensing is expensive, when you're talking about 7+ developers, they have a great pricing model.

Even though a single seat license is expensive and it seams pointless for 1 developer, what you can do with it without having to worry about merging, keeping track of changes and where you made them, it's even worth it for me to pay for the peace of mind I get when I use it.