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:
- When you start the deliver operation, your development stream
is placed in the deliver-in-progress state.
- Dependencies between versions in the change sets of the
activities that are as yet undelivered in the target stream are checked.
- 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.
- 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.
- If an element cannot be checked out, the deliver operation
does not proceed to the following step. In this case, you have two 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.
- 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.
- When all merges are finished, you are prompted to build
and test the work in your integration view.
- 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:
- The merge results in the target stream are checked in.
- The state of the stream is changed to Complete.