One day I came across a marketing blurb from AccuRev that contained this sentence: “Our customers realize significant productivity as a direct result from reducing the amount of merging they have to do when using AccuRev.” Having seen such claims in the past from marketing departments of technology companies that don’t understand their own product, I dismissed it as naivety. I mean, a merge is a merge, and the number of them has nothing to do with the tool, right? And most enterprise level CM tools today do a pretty good job of merging code. So what were they talking about? I decided to forget about it. But I couldn’t. It kept gnawing at me. And then finally I realized what it is they meant.
A CM best practice is to get your colleagues changes into your local sandbox as soon as possible so you don’t fall too far behind. That isn’t always easy to do with a traditional branch-and-label system, where large numbers of changes are pushed into integration branches at well known intervals or scheduled times such as “merge week”. But this comes with a cost: you must stop what you’re doing and attend to merging (breaking your workflow), you may not be ready to receive your colleague’s changes, and your changes may not be ready to share with others.
AccuRev’s stream based inheritance and update command combine to comprise a pull model, the opposite of the branch-and-label push model, which eliminate the problems mentioned above. This model encourages the sharing of smaller units (milestones) of work over shorter periods of time. If David updates his workspace before making changes to the same file Madhuri just promoted, no merge will be needed when he’s ready to promote his version; Madhuri’s changes are already in his version (no overlap). David began his work making changes to the version she promoted, not the old one that was in his workspace before, thus one less merge to do. And as a benefit, he tested his changes with Madhuri’s in his unit testing during his own development, not after a merge operation. Other team members who aren’t ready for Madhuri’s or David’s changes are not impacted since the decision when to update is left up to them.
Maybe I should pay more attention to what marketing has to say from now on.
- Brian Buttolph