Perforce has brought a codeline management workflow tool called Perforce Streams to its version management system. Intended to provide a "branch-and-merge" strategy to guide programmers through iterative development environments, the new enhancement sets out to organize project modules (such as software libraries) and the policies that govern their workflow.
Providing some color to quantify and qualify this "module organization" function, Perforce explains that each "Stream" is a database object that contains metadata about a branch — its location in the depot, its parent branch, its stability (such as release or development), and more. This "contextual information" will potentially make branching behavior more intuitive and visual, ensuring that change flows in the right direction, in the right order.
"We may not have invented streams, but our approach takes them to a new level," said Randy DeFauw, technical marketing manager for Perforce Software. "Our model implements best practices for codeline management that we've championed for over a decade. With the addition of Streams, developers gain tools to implement fast Agile development while guaranteeing the high performance and unlimited scalability our customers expect."
Users can quickly switch from one branch to another in a single workspace. Only the files that differ between the two branches are updated, making the process very efficient. In addition, a stream can easily be moved to a new parent, providing additional flexibility for rapid development workflows.
The Stream view captures and defines the composition of a Stream, including:
- the level of sharing between Streams;
- the modules that are being actively developed;
- the modules that are available from a parent stream for read-only use; and,
- which dependencies are imported from other parts of the repository.
Once a product architect has defined the Stream view, that information is inherited by child Streams and by the users working in the Stream. Workspaces are created and updated automatically based on the Stream view. New child Streams are created with minimum configuration.
According to Perforce, "The information in the Stream model is used to build powerful visualization tools such as the Stream Graph. The Stream Graph provides a quick overview of the Stream model, visual cues for pending merges, and easy access to branching tools. Simple drag-and-drop operations make switching between Streams, for example from development of a new feature to maintenance in a released product fast and easy to use."
Developers can choose to work using either the Streams framework, taking advantage of the built-in models and tools, or they can continue to work with classic Perforce branching as they always have.


