Stream types

In the stream spec, you assign stream types in a stream hierarchyClosed The set of parent-to-child relationships between streams in a stream depot. according to the expected usage, stability, and Flow rules of the stream.

Type Description

release

A stream that is more stable than its parent. Expects merging down from more stable child streams. Does not expect copying up from its parent stream. Useful for ongoing stabilization, bug fixing, and release maintenance.

mainline

A stream with no parent. Expects merging down from more stable child streams. Expects copying up from less stable child streams. The mainline stream is typically the parent of the release, sparserel, development, and sparsedev streams.

development

A development stream is less stable than its parent. Expects merging down from its parent stream. Expects copying up from its less stable child streams. Does not expect to have more stable child streams. Useful for long-term projects and developing major new features.

sparsedev

sparserel

Sparse streams are lightweight: no need to wait a long time for the initial populate command, and no need to delete or unload to maintain performance.

In terms of flow rules :

  • sparsedev is similar to development

  • sparserel is similar to release

You can convert a sparsedev stream to development, and a sparserel stream to release.

To learn more, see Sparse streams.

task

Consider using sparse streams instead of task streams because sparse streams have significant advantages over task streams.

Use sparse streams instead of task streams unless you need a feature that sparse streams do not support.

virtual

Restricts the workspace view of a real stream. Virtual streams act as a filter. They are useful when you want to:

  • Submit changes directly to a stream, but do not want to sync all of the files in the stream view to your workspace.
  • Develop against the same stream but switch imported libraries, such as when you develop across multiple platforms

See Virtual streams.