MyWikiBiz, Author Your Legacy — Wednesday May 29, 2024
Jump to navigationJump to search

AccuRev is a Software Configuration Management (SCM) solution developed by AccuRev, Inc. Founded by current CTO and architect Damon Poole in 1998, the company is based in Lexington, Massachusetts. The initial release of AccuRev 1.0 was made in 2002.[1][2]


AccuRev does not use the concepts of branches or labels. Instead, AccuRev uses streams and snapshots. Source code files live in the streams and changes flow down through the hierarchy in which the streams are organized. Streams are first class objects that can be graphically visualized and manipulated by developers to change the behavior of the system. Content can be crosslinked from one stream to another enabling component-based development possible.[3]

  • Dynamic streams are typically used to isolate project-level work effort
  • Static (immutable) streams or Snapshots are often used to implement baselines for organization-level work
  • Private Workspace streams are where the user makes their day-to-day actual changes. These changes are tracked by the AccuRev but are not visible to anyone else until the user chooses to promote the change to the workspace's parent stream.


AccuRev is designed around the TimeSafe principle which is the concept that a source control system must be able to unwind from the current state of the world and show users the exact state it was in at any point in the past in an effortless manner. AccuRev accomplishes this by ensuring that all operations are performed as atomic transactions with fine grained time tracking and global transaction numbers. Because files are not identified by path name, but by a global identity number, TimeSafe allows elements to undergo renaming refactoring without jeopardizing the history of the element.[4]

Change Packages

AccuRev supports a method of managing changes as atomic units. By specifying the same issue number when promoting different changes, the changes will be grouped together into a single change package that can then be manipulate by issue number. Changes can then be moved through the stream hierarchies in an atomic manner - if any piece of the change package were to cause the promotion to fail, no part of the changes will be taken. This atomic nature keeps incomplete code sets from polluting a stream.[5]

Comparing, Merging and Refactoring

The AccuRev user interface provides both a command line interface and a rich Java GUI. The command line interface also has options to output its data in XML format.

Among the functionality provided in the interfaces are the ability to difference at many different levels - by files, by stream, or even by Change Package. Users may then elect to perform merges that consider not just the current state of the two elements in question, but with a tool that is aware of prior versions of the element and finds the last common ancestor to help simplify the job.

The Version Browser is used to visualize the changes that files have undergone over time from the perspective of what streams and workspaces the file was modified by in a single screen. Additionally, the Annotatation Viewer allows users to see the last change made to each line of a file, when that change was made, who made it, and the transaction number that uniquely identifies the changes that were made at the same time. AccuRev supplies full support for moving, renaming and deleting files and directories while preserving their history. This frees developers to be able to conduct refactorings that rename elements without concern for losing vital information about the root of changes to the code they work on.[6]


AccuRev uses a client/server based architecture. Communication is performed via TCP/IP using an XML based protocol for actions, and streaming for file transfers.[7]


External Links