AccuRev’s application lifecycle solution is built from the ground up on a unique, stream-based architecture. At its core, AccuRev provides all of the functionality of an enterprise version control system but goes beyond with advanced capabilities that enable workflow & process modeling and change-based traceability to fully leverage the power of streams.
Streams support the basic branching capabilities of code divergence and merging but also provide much more functionality. Streams define the various configurations of your entire codebase and automatically manage the parent-child relationships with other streams.
Streams are structured in a hierarchy that takes advantage of the parent-child relationship. This makes it easy to model your development process by level of code maturity within the tool from the developer’s private workspace all the way to the production stream and every step between (including integration, continuous integration builds, regression testing, QA, user acceptance testing, etc.). AccuRev graphically displays and provides drag-and-drop manipulation of this entire stream structure allowing for full visualization and control of your development workflow.
Private Workspace Streams
Developers work in their own private workspace streams, which act like private sandboxes for development. Developers can “keep” changes in their workspaces, which saves modified files to the AccuRev server making them publicly visible but not yet publicly accessible until they are ready to share. When developers want to get the latest changes from the stream they’re working on, they simply “update” their workspaces.
The Flow of Changes
Users “promote” their changes as they move files higher up the stream structure. Because of the parent-child relationship of streams, promoted files can be automatically “inherited” by lower streams in the structure, meaning that some merges are performed automatically by the system. If a team working on a feature stream promoted up changes to an integration stream, those changes could be instantly merged down to other teams working on feature streams which are children of that integration stream. This greatly reduces the amount of manual work when integrating changes between all teams.
When there’s a situation where a feature or fix is not going to be completed in time for the next release, a simple drag-and-drop operation allows users to “reparent” streams and workspaces to the subsequent release stream. Conversely, if you need to get a feature or hotfix out the door quickly, reparenting can easily allow users to base their workspaces on the latest release and promote that crucial issue.
Working at the Change Level
AccuRev change packages directly tie code changes to the issues they resolve. These issues could be stories, defects, enhancements, tasks, etc. This allows developers to both easily promote all changes by issue and conversely, back out all changes associated with an issue. Issues can also be instantly moved between releases and streams that aren’t directly related to one another.