Web Tools Platform 1.5 Maintenance Branching Strategy
Web Tools Platform 1.5 Maintenance Branching Strategy
 

Updated 2006-07-07

Introduction
 

Branch name: R1_5_maintenance

 

The document details the branching strategy for the WTP 1.5 maintenance release. Plug-ins and features will be branched on demand. This means you do not need to branch if your fix is common to both the 1.5 and 2.0 (HEAD) stream. You will need to branch if you are committing a fix that is only applicable for the 2.0 but not the 1.5 stream, or vice versa.

Deciding which stream your fix is applicable for
 

Before you fix anything, the first thing to think about is which stream your fix is applicable for. Is it only applicable for the 1.5 maintenance stream, or only for the 2.0 (HEAD) stream, or both? In general, any bug fixes that go into the 1.5 maintenance stream should also go into the 2.0 (HEAD) stream. If your fix is a breaking change (ex. change in API), an enhancement, etc, then it should go only into the 2.0 (HEAD) stream and not the 1.5 maintenance stream.

If your fix is applicable for both the 1.5 maintenance and 2.0 (HEAD) stream, go here
If your fix is only applicable for the 2.0 (HEAD) stream, go here

 
Fixing a bug that is common to both the 1.5 maintenance and 2.0 HEAD stream
 

So your fix is common to both the 1.5 maintenance stream and the 2.0 (HEAD) stream. For this scenario, my recommandation is to check out the 1.5 maintenance version of the plug-in/feature, check in the fix and retrofit the fix back to the 2.0 (HEAD) stream. To check out the correct 1.5 maintenance version of your plug-in/feature...

  1. First, check if your plug-in/feature has been branched or not. If so, you'll need to check out the branched version of the plug-in/feature. Otherwise you'll check out the plug-in/feature from HEAD. I'll use one of the WST plug-in as an example. In the CVS Repositories view, expand the Branches node and see if the 1.5 maintenance branch is already configured. If it is not configured, read on. Otherwise, go here.

  2. To configure the 1.5 maintenance branch, right click on the wst folder (right click on the jst folder if you are working with jst plug-ins/features) > Team > Configure Branches and Versions...
  3. In the popup dialog, browse for any files in your plug-in/feature. After you do that, a list of available tag name will show up in the RHS panel.

  4. If you don't see the R1_5_maintenance tag, that means your plug-in/feature is not branched. In this case, you can check out the plug-in/feature from HEAD, check in your fix and release your changes to both the 1.5.1 and 2.0 map files. More information on releasing is available here.
  5. If you see the R1_5_maintenance tag, that means this plug-in/feature has already been branched. Click the Deselect All button > check the R1_5_maintenance tag > click the Add Checked Tag button > OK.

  6. In the CVS Repositories view, expand the Branches node > expand R1_5_maintenance > browse for your plug-in/feature and check it out to your workspace. You can now fix and release your changes. One thing to be careful is that since your plug-in/feature is already branched, the changes that you made to the branched plug-in/feature should only be released to the 1.5 maintenance stream and not the 2.0 (HEAD) stream. Here's how to release to the 1.5 maintenance stream. After you fix and release to the 1.5 maintenance stream, you need to check out the same plug-in/feature from HEAD again and release the changes to the 2.0 (HEAD) stream. Here's how to release to the 2.0 (HEAD) stream.

 
Fixing 2.0 only bug
 

Before you commit your 2.0 only bug fix, you must branch your plug-in/feature (assuming it is not already branched). To check whether a plug-in/feature is branched or not, follow the instructions outlined in the previous section.

 

For 2.0 only bug fixes, the first thing that you should do is check out your plug-in/feature from HEAD to your workspace. If your plug-in/feature is not yet branched, branch it now. Here's how...

  1. In your workspace, right click on the plug-in/feature project > Team > Branch...
  2. Enter R1_5_maintenance as the branch name > OK.

  3. That's it. You have branched your plug-in/feature. The following figures show you the difference between a plug-in from HEAD and a plug-in from the 1.5 maintenance branch.

The only thing left to do is to fix your code and release your changes to the 2.0 (HEAD) stream. Just a reminder that you DO NOT need to release your changes to the 1.5 maintenance stream.

 

We have created a document to keep track of the current status of WTP 1.5 branching. The document is located here. If you have branched a plug-in/feature, please update the document.

 
Releasing fixes to the 1.5 maintenance stream
 

  1. In the CVS Repositories view, expand the HEAD node > right click on the releng project > Configure Branches and Versions...
  2. In the LHS panel, select any files. After you do that, a list of available tag name will show up in the RHS panel.

  3. Click the Deselect All button > check the R1_5_maintenance tag > click the Add Checked Tag button > OK.

  4. In the CVS Repositories view, expand the Branches node > expand R1_5_maintenance > right click on the releng project > Check out.

  5. You can now release your changes to the newly checked out releng project. I recommand using different tag names for the 1.5 and 2.0 (HEAD) map files.

 
Releasing fixes to the 2.0 HEAD stream
 

Check out the releng project from HEAD and release your changes to it. I recommand using different tag names for the 1.5 and 2.0 (HEAD) map files.

Other
 

Retrofitting/merging changes between the 1.5 maintenance stream and the 2.0 (HEAD) stream can be time consuming. There is an Eclipse tool available that helps you retrofit/merge changes between a branch and HEAD. For more information, click here.