How activities are delivered

When you deliver an activity in a multiple-stream project, the versions in the activity change set are merged to the versions in the target stream. Only the versions that you have checked in are merged.

Developers are allowed to deliver work concurrently. However, if another team member's deliver operation has checked out an element, you cannot deliver any changes to that element until that deliver operation is completed or canceled.

Activity objects

Activity objects are not moved from the development stream to the target stream. Instead, an integration activity is created to identify the versions created as a result of the merge.

The deliver operation

The deliver operation proceeds in the following order:
  1. When you start the deliver operation, your development stream is placed in the deliver-in-progress state.
  2. Dependencies between versions in the change sets of the activities that are as yet undelivered in the target stream are checked.
  3. Each directory in your development stream is evaluated sequentially. Versions are checked out and changes are merged to the target stream when needed. If a reserved directory checkout is encountered in the target stream, the deliver operation stops. Any successful directory merges are retained.
  4. An attempt is made to check out each element that requires a merge. If an element that cannot be checked out is encountered (for example because another team member's deliver operation has already checked out the element), the element is skipped and more attempts are made to check out the remaining elements.
  5. If an element cannot be checked out, the deliver operation does not proceed to the following step. In this case, you have the following options:
    • Wait until the other developer completes or cancels the deliver operation, and then restart your deliver operation. However, with a deliver operation in progress, any new versions you create in your development stream are not delivered until the next deliver operation.
    • Undo your deliver operation and continue working on your activities.
  6. After all elements that can be checked out are successfully checked out, each element is merged. Diff Merge starts and requests your input when merge conflicts are encountered.
  7. When all merges are finished, you are prompted to build and test the work in your integration view.
  8. The deliver operation stays in the deliver-in-progress state until you formally complete the operation (issue the complete command). To complete the deliver, the following is done:
    1. The merge results in the target stream are checked in.
    2. The state of the stream is changed to Complete.