The Stream Graph provides a graphical representation of the stream hierarchy contained in a stream depot. The Stream Graph conveys important information about stream relationships, the workflow used to propagate changes across streams, and the existence of pending integrations.

The parent/child relationships defined in the system metadata determine where Perforce places streams in the hierarchy. In this first release, for all children of the mainline stream, Perforce determines a stream's position in the stream hierarchy based on the stream type. Perforce places release streams that are children of the mainline above the mainline and development streams that are children of the mainline below the mainline.

Child streams above the first level of release streams are always drawn above the parent, regardless of the stream type, development or release. Similarly, child streams below the first level of development streams are always drawn below the parent.

For example, when creating a patch for a release stream, a developer would create a development branch as a child of the release stream. As you can see, Perforce places the development branch above the release stream in the Stream Graph.

Within the streams framework, you typically propagate changes between parent and child streams. The Stream Graph illustrates the intended flow of change across streams using arrows between the streams. The arrows represent channels that help ensure that each change gets to the right place in the right way.

Recall that the default process for propagating changes across streams is merge down/copy up. The color of the connector between parent and child streams, either gray, green, or orange, reflects the state of pending changes within a codeline as follows:

Gray signifies that there are no pending changes.

Green indicates that changes are pending and ready to integrate.

Orange indicates that changes are pending but another process must be run before they are ready to integrate.

To propagate changes across streams, you can open the streams integrate dialog box and select either the merge or copy command depending on the direction you want to propagate your changes. Alternatively, you can double-click on the stream and invoke the helper dialog that suggests the appropriate integration strategy and provides a link to the proper command.

The functionality provided by the merge and copy commands and by the resolve dialog is the same when used in Perforce Streams as in Classic Perforce.

Course - Using Streams to Simplify Codeline Management