It's all about the answers!

Ask a question

Awareness for RTC changeset dependency

Yaron Norani (47267064) | asked Sep 11 '13, 2:54 a.m.


We are using RTC for source control and work items management.

The usage is that each user develop changesets and connect then to work items. Then deliver to a "Dev" Stream.

We would like to have the option to select work items (not all) that were delivered to the "Dev" stream and deliver them to the "Integration" stream.

The concept is to select which items will be integrated to the "integration" stream.

I am aware to the fact that if there is a changeset dependency  it might that I will not be able to deliver.

This is currently not supported (cherry picking option - managing gaps). Workaround is to use "patch". I do not want to use it for now.

So, I will make a compremize and would like to get the following behaviour:


Currently I would like to be able to choose several changesets (based on work items status criteria).

Since this is impossible to perform it when there is dependency (only option is using patch), I would like to be able to perform the following:

1. Criteria - would like to accept (or deliver) all changesets exist in the stream (incoming) that are linked to the selected work items.

2. If there is a changeset dependency - I would like to know which changeset and work item is required.

3. Based on that I would like to be able to accept the dependent work item (and changesets) as well.

4. So, I need some kind of "dependency map". Actually the best is to have this information managed as work items links.

Please suggest a solution how to progress.

We are currently in a middle of a large SCM implementation and this issue must be solved in order to accomplish the process.



2 answers

permanent link
praveen patidar (8613144) | answered Jan 16 '14, 8:00 p.m.
You have work on the deadly RTC API. here is the algorithm to run the scenario. You can create a java utility with RTC API that can do the job.

Login to RTC
Create Workspace with target to the Integration Stream (This either can be created from SCM command line.)
Compare the given workspace with the Dev Stream
Get the list of all outgoing change sets.
Get the work item linked with all change sets.
If the work item associated with change sets is in the valid state keep them in deliverable change sets.
Rest all change set would be undeliverable change sets.
[Dependency Detection]
  from the undeliverable change sets 
    Collect all the file items from the deliverable. get the full path.
    you need collection of file items with the list of change sets with that. define that as undeliverable file items.
    From the deliverable change sets
   Iterate the file items one by one. If the file item is present  in the undeliverable file items then see the date of the change sets. if the undeliverable change set is modified later then deliverable change set the keep the deliverable change set as dependent. Remove the change set from the list of deliverable change sets.
You will then get the list of independent deliverable change set from the initial list of deliverable change sets.
Deliver the change sets to the Workspace.
Deliver the change sets from the Workspace to the stream using the deliver command.

permanent link
David Lafreniere (4.8k7) | answered Jun 25 '14, 3:24 p.m.
Since cherry picking change sets always has the potential to introduce gaps, this may be unavoidable. However we did deliver some features that may help with your use case.

In RTC 4.0.5 we delivered additional support when trying to accept change sets which have a gap (often encountered when trying to backport fixes). In a very brief summary of the feature, when you accept change sets with a gap, you can now follow a gap workflow that accepts one change set at a time and, for change sets that contain gaps, creates a new change set (with aided traceability), that contains the equivalent changes. This means users will not have to accept the change sets 'as a patch'. Applying change sets as a patch has limitations compared to the new workflow (as discussed in the article below).
This feature is summarized in the RTC 4.0.5 'New & Noteworthy' page:
Below are some videos which show this feature:
-Accepting multiple change sets with gaps in the RTC 4.0.5 client for Eclipse IDE:
-Accepting a change set with a gap in the RTC 4.0.5 client for Eclipse IDE:

In RTC 5.0 we added a "fill the gap" feature where the change sets that fill the gap are shown to the user, allowing them to either accept all the change sets or to continue with the gap workflow that was available in RTC 4.0.5.
This feature is summarized in the RTC 5.0 'New & Noteworthy' page:

The classes that are involved for filling the gap include (available in RTC 5.0):
client side: IWorkspaceConnection.findChangeSetsToAcceptToFillGap(...)
server side: IScmQueryService.findChangeSetsToAcceptToFillGap(...)

Both features are explained in detail in the "Improved Gap Handling for SCM" article:

Your answer

Register or to post your answer.