Merge down and copy up between streams

Before changes made in a less stable stream can be copied up to its more stable child or parent, any changes in the more stable stream must be merged down to the less stable.

In the Stream graph, status indicators between streams tell you which streams have changes to contribute and where the changes can be copied or merged:

Merge indicator: stream arrow merge

Copy indicator: stream arrow copy

The arrows are color-coded to indicate status:

  • Gray: no merge or copy required
  • Green: a merge or copy operation is available
  • Orange: stream must be updated, after which merge or copy is available

For example, the following arrows above the dev-2.1M2 stream indicate that you must update it by merging down from its parent, after which you can copy up changes to the parent.

streams merge copy indic

When you double-click a stream in the Stream graph, a pop-up displays copy and merge information, along with links to the Merge/Integrate and Copy dialogs.

stream popup

Merge down

To merge changes down to a less stable stream:

  1. In the Streams tab, right-click the target stream and choose Merge/Integrate to target_stream…​ or double-click and choose Merge changes.

    When you merge down or copy up, you must be working in the target stream.

  2. If prompted, select or create a workspace for the target stream.

    The Merge/Integrate dialog box is displayed. Verify that the correct source and target streams are specified.

    For more information about the Merge/Integrate dialog box, see Merge files between codelines.

  3. (Optional) To specify how the merge is to be resolved, click Resolve and Submit.

    To enable specific p4 resolve flags, click Advanced.

  4. Click Merge.

    If necessary, resolve the merges manually, then submit the resulting changelist.

Copy up

When you copy changes up to a more stable stream, you are propagating a duplicate of the less stable stream.

To copy changes up to a more stable stream:

  1. In the Streams tab, right-click the target stream, or double-click the stream and select Copy changes.

    If prompted, select a workspace for the target stream.

    When you merge down or copy up, you must be working in the target stream.

  2. In the Copy dialog box, review the propagation information or refine the operation using the options on the Filter, Submit, and Advanced tabs.
  3. To propagate changes to the more stable stream, click Copy and submit the resulting changelist.

Stream spec integration

You might want a release or development stream that has a Parent View: noinherit to get a set of changes from its parent. The set of changes could include changes to the parent stream's view or changes to any custom, propagatable fields that might have been added to the stream spec definition. The substitute for automatic inheritance in this case is to manually integrate by merging from the parent stream to the child stream. By default, a child stream with ParentView: noinherit can manually integrate from its parent stream.

Note

The value of the dm.integ.streamspec configurable determines whether stream spec integration is allowed:

0

Stream spec integration is not allowed
1

(default)

Stream spec integration allowed only for streams with Parent view: noinherit
2

Stream spec integration allowed for any stream

Tip

In the Stream Graph, the Copy/Merge Hints drop-down list lets you see integration hints for Files Only, Stream Spec Only, or Files And Stream Spec.

You can integrate files only or stream spec only. If you want to integrate both, it would be two separate operations.

To integrate the stream spec, right-click the stream and select Merge Stream Spec or Copy Stream Spec:

Suppose you choose Merge. In the Merge Stream Spec dialog box, to preview the stream spec merge before performing the merge, click Preview:

If you see no problem with the preview, click Merge and the merged stream spec is scheduled for resolve.

See Resolve stream specs.

Propagate change between streams that are not directly connected

To propagate change between streams that are not directly connected, click the Browse button on the Merge or Copy dialog box, then click the Display all streams link and choose the desired source.

You can also reparent a stream to create the relationship. To reparent a stream in the Stream graph, drag the stream to the new parent stream.

You can merge or copy changes between related task streams.