Sunday, December 28, 2008 11:08 AM
kolbis
What Gives? Single Codebase (Agile & Branching)
Here is a quote from a book I am reading now:
"To eliminate the need for a branch entirely, automatically migrate your customers and users to the latest version every time you release."
But wait, was is a branch?
Branch
Simply put, to branch your code is to split the repository into two separate lines of
development. You can branch by release, feature, product and so forth.
Back to the first sentence...
This book I am reading is "The Art Of Agile Development", which talk about, well, Agile and uses XP as an example. One of the sections talk about Version Control. According to the book, there are several rules when practicing Agile in regard to version control, and one of them is Single Codebase. A Single Codebase rule, say that you should have only one copy of your code base.
In other words, Branching is not recommended and we can eliminate it...
So, Is it true? Can we eliminate the need for branch entirely?
My Opinion
I have to say that I am having a hard time excepting this sentence:
"To eliminate the need for a branch entirely, automatically migrate your customers and users to the latest version every time you release."
I believe that the elimination depends on the business. Let me explain by an example. Let say that you sale a service for upgrading your product. A customer can choose whether to buy this service. If a customer does not buy it, you will have to maintain a working version that has its own development lifeline which bug fixes are also apply to it. Yes, I know we have an overhead with the merging the fixes, this still, in my opinion, is the best option you have. Having said that, Agile (XP), has another rule that say "No Bugs". "No Bugs" say that there should not be any bugs in your release...Yep, right!!! We can always strive to achieve "No Bugs", but lets face it, there will always be some bugs...
Summary
To sum things up, I would say that branching is something that derives from the business. Having said that, if the business allows it, Agile (XP) can help eliminating the need for branching.
תגים:Architecture, Dev, Tech