$1399 per named user
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
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.
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.