Reviews

Review: AccuRev

AccuRev 3.3.1
$1399 per named user
AccuRev, Inc.
Lexington, Massachusetts
(781) 861-8700
www.accurev.com

This source code control system shipped in 2002, but I just now heard about it, got a demo, and played with a trial copy. There's quite a bit to like here. The folks at AccuRev decided to rethink source code control, instead of just doing things the way that most other systems do it. The result is an innovative approach that offers both serious data protection and a just-plain-fun graphical interface.

On the data protection front, AccuRev emphasizes atomicity and immutability. Any transaction in AccuRev is atomic, whether it represents checking in a single file or labeling a thousand files. And every atomic transaction in AccuRev is permanent. (Apparently, they built their own database to match their requirements exactly). This doesn't mean that you can't undo - but if you undo, you're not throwing away a version, you're just adding another copy of the previous version as the latest version. The result is that you can get back to any point in time with assurance that what you see is what was there at the time.

AccuRev implements a client-server architecture that uses TCP/IP for all communications. This makes it easy to use a single client with multiple repositories (just change IP addresses and ports), and should make it usable over the Internet (though I didn't test that configuration myself).

AccuRev uses just four commands for basic operations, and though they differ a bit from what you might be used to, they're easy to understand and work with. Each user has their own private area in the AccuRev depot, and the Keep command stores your own changes in your own private area. Promote makes those changes available to others, and conversely Update gets promoted changes from other users and puts them into your own workspace. Finally, Merge handles conflict resolution between multiple versions of a file. The merge tool handles non-conflicting merges automatically and provides a three-way graphical merge in the case of conflicts.

The most impressive part of the product, I think, is the graphical manager for streams (essentially, branches) and workspaces. It's easy to create a new development stream when you need to branch development. It's easy to merge changes from one stream into another by using the Change Palette tool, which lets you decide exactly what you want to propagate from one stream to another. It's easy to promote changes up the source tree. And amazingly, it's easy to rearrange the pattern of branches just by moving things around in the graphical interface. The end result is a tool that's flexible enough to handle nearly any pattern of test, release, and maintenance development

There's also a graphical view that can show you the history of any element in any workspace - exactly which changes were made where, by who, and on which branches of development. And just to top everything off, there's AccuRev/Dispatch, an integrated issue tracking system to integrates directly with the configuration management piece. If you'd like, you can try the whole shebang for free; there's a 2-user, 30-day trial at their Web site, or you can arrange a larger evaluation key if you need it. This one is worth checking out, especially if your version control requirements involve many versions or complex branching.

About the Author

Mike Gunderloy has been developing software for a quarter-century now, and writing about it for nearly as long. He walked away from a .NET development career in 2006 and has been a happy Rails user ever since. Mike blogs at A Fresh Cup.