This chapter describes how to configure streams, how to propagate changes between them, and how to update them.

About streams

Streams are like branches, but with additional intelligence built in.


  • provide clues of where and how to do branching and merging
  • guide merging and branching actions that support stability and innovation
  • are ideal for implementing the mainline branching model, in which less stable streams merge changes to keep up to date with their parents, then copy work to the parent when the work is stable enough to promote.
  • eliminate much of the work needed to define branches, create workspaces, and manage merges
  • enable the system to generate views for associated workspaces, eliminating the need for you to update views manually to reflect changes to your stream structure.

When you create a stream, you specify its type, information about the files it is associated with, its relationship to other streams, and how files are to be treated for branching and merging. The system uses the information you provide to encourage merging best practices and to track parallel development.

The stream type tells the system how stable the stream is relative to other streams.

The stream’s path information tells the system:

  • which files to populate the workspace with
  • which files child streams are allowed to branch
  • which changelist to lock the files at.

Parent labeling specifies how the stream relates to other streams in the system, helping to determine how change flows through the system.


If you are using Helix server branches and want to use streams instead, see the Support Knowledgebase article, "Migrating from Classic to Stream Depot".