blob: 8fce6e3e562cf6f335b8368dd56b8223c432b0e8 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type"
content="text/html; charset=UTF-8" />
<meta
http-equiv="Content-Type"
content="text/html; charset=iso-8859-1" />
<link
rel="stylesheet"
href="../../../../default_style.css"
type="text/css" />
<link
rel="stylesheet"
href="../../../../webtools/wtp.css"
type="text/css" />
<title>Web Tools Platform 1.5 Maintenance Branching Strategy</title>
</head>
<body>
<table
width="100%"
cellspacing="5"
cellpadding="2"
border="0">
<tbody>
<tr>
<td
width="60%"
align="left"><font class="indextop">Web Tools Platform 1.5 Maintenance Branching Strategy</font> <br />
<font class="indexsub">Web Tools Platform 1.5 Maintenance Branching Strategy</font></td>
<td width="40%"><img
width="207"
hspace="50"
height="129"
align="middle"
src="../../../../webtools/images/wtplogosmall.jpg"
alt="" /></td>
</tr>
</tbody>
</table>
<table
width="100%"
cellspacing="5"
cellpadding="2"
border="0">
<col width="16" />
<col width="*" />
<tbody>
<tr>
<td
valign="top"
align="right">&nbsp;</td>
<td valign="top">
<p align="right"><em>Updated 2006-07-07</em></p>
</td>
</tr>
<tr>
<td
valign="top"
bgcolor="#0080c0"
align="left"
colspan="2"><b><font
face="Arial,Helvetica"
color="#ffffff">Introduction</font></b></td>
</tr>
<tr>
<td
valign="top"
align="right">&nbsp;</td>
<td valign="top">
<p>Branch name: <b>R1_5_maintenance</b></p>
</td>
</tr>
<tr>
<td
valign="top"
align="right">&nbsp;</td>
<td valign="top">
<p>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.</p>
</td>
</tr>
<tr>
<td
valign="top"
bgcolor="#0080c0"
align="left"
colspan="2"><b><font
face="Arial,Helvetica"
color="#ffffff">Deciding which stream your fix is applicable for</font></b></td>
</tr>
<tr>
<td
valign="top"
align="right">&nbsp;</td>
<td valign="top">
<p>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. <br />
<br />
If your fix is applicable for both the 1.5 maintenance and 2.0 (HEAD) stream, go <a href="#common">here</a>
<br />
If your fix is only applicable for the 2.0 (HEAD) stream, go <a href="#HEAD_only">here</a></p>
</td>
</tr>
<tr>
<td
valign="top"
align="right">&nbsp;</td>
<td valign="top"><a id="common"></a></td>
</tr>
<tr>
<td
valign="top"
bgcolor="#0080c0"
align="left"
colspan="2"><b><font
face="Arial,Helvetica"
color="#ffffff">Fixing a bug that is common to both the 1.5 maintenance and 2.0 HEAD stream</font></b></td>
</tr>
<tr>
<td
valign="top"
align="right">&nbsp;</td>
<td valign="top">
<p>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...</p>
<ol>
<li>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 <b>Branches</b>
node and see if the 1.5 maintenance branch is already configured. If it is not configured, read on.
Otherwise, go <a href="#common1">here</a>.
<p><img
src="fig1.gif"
alt="" /></p>
</li>
<li>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) &gt; Team &gt; Configure Branches and Versions...
</li>
<li>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.
<p><img
src="fig2.gif"
alt="" /></p>
</li>
<li>If you don't see the <b>R1_5_maintenance</b> 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 <a
href="#release_15">here</a>.</li>
<li>If you see the <b>R1_5_maintenance</b> tag, that means this plug-in/feature has already been
branched. Click the Deselect All button &gt; check the <b>R1_5_maintenance</b> tag &gt; click the Add
Checked Tag button &gt; OK.
<p><img
src="fig3.gif"
alt="" /></p>
</li>
<li><a id="common1"></a> In the CVS Repositories view, expand the Branches node &gt; expand
R1_5_maintenance &gt; 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. <a href="#release_15">Here's how</a> 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. <a
href="#release_HEAD">Here's how</a> to release to the 2.0 (HEAD) stream.
<p><img
src="fig4.gif"
alt="" /></p>
</li>
</ol>
<p></p>
</td>
</tr>
<tr>
<td
valign="top"
align="right">&nbsp;</td>
<td valign="top"><a id="#HEAD_only"></a></td>
</tr>
<tr>
<td
valign="top"
bgcolor="#0080c0"
align="left"
colspan="2"><b><font
face="Arial,Helvetica"
color="#ffffff">Fixing 2.0 only bug</font></b></td>
</tr>
<tr>
<td
valign="top"
align="right">&nbsp;</td>
<td valign="top">
<p>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 <a href="#common"> previous section</a>.</p>
</td>
</tr>
<tr>
<td
valign="top"
align="right">&nbsp;</td>
<td valign="top">
<p>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...</p>
<ol>
<li>In your workspace, right click on the plug-in/feature project &gt; Team &gt; Branch...</li>
<li>Enter <b>R1_5_maintenance</b> as the branch name &gt; OK.
<p><img
src="fig5.gif"
alt="" /></p>
</li>
<li>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.
<p><img
src="fig6.gif"
alt="" /> <img
src="fig7.gif"
alt="" /></p>
</li>
</ol>
The only thing left to do is to fix your code and <a href="#release_HEAD">release</a> 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.
<p></p>
</td>
</tr>
<tr>
<td
valign="top"
align="right">&nbsp;</td>
<td valign="top">
<p>We have created a document to keep track of the current status of WTP 1.5 branching. The document is
located <a href="http://www.eclipse.org/webtools/development/cvs_branches.html">here</a>. If you have
branched a plug-in/feature, please update the document.</p>
</td>
</tr>
<tr>
<td
valign="top"
align="right">&nbsp;</td>
<td valign="top"><a id="release_15"></a></td>
</tr>
<tr>
<td
valign="top"
bgcolor="#0080c0"
align="left"
colspan="2"><b><font
face="Arial,Helvetica"
color="#ffffff">Releasing fixes to the 1.5 maintenance stream</font></b></td>
</tr>
<tr>
<td
valign="top"
align="right">&nbsp;</td>
<td valign="top">
<p></p>
<ol>
<li>In the CVS Repositories view, expand the HEAD node &gt; right click on the releng project &gt;
Configure Branches and Versions...</li>
<li>In the LHS panel, select any files. After you do that, a list of available tag name will show
up in the RHS panel.
<p><img
src="fig2.gif"
alt="" /></p>
</li>
<li>Click the Deselect All button &gt; check the R1_5_maintenance tag &gt; click the Add Checked
Tag button &gt; OK.
<p><img
src="fig3.gif"
alt="" /></p>
</li>
<li>In the CVS Repositories view, expand the Branches node &gt; expand R1_5_maintenance &gt; right
click on the releng project &gt; Check out.
<p><img
src="fig8.gif"
alt="" /></p>
</li>
<li>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.</li>
</ol>
<p></p>
</td>
</tr>
<tr>
<td
valign="top"
align="right">&nbsp;</td>
<td valign="top"><a id="release_HEAD"></a></td>
</tr>
<tr>
<td
valign="top"
bgcolor="#0080c0"
align="left"
colspan="2"><b><font
face="Arial,Helvetica"
color="#ffffff">Releasing fixes to the 2.0 HEAD stream</font></b></td>
</tr>
<tr>
<td
valign="top"
align="right">&nbsp;</td>
<td valign="top">
<p>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.</p>
</td>
</tr>
<tr>
<td
valign="top"
bgcolor="#0080c0"
align="left"
colspan="2"><b><font
face="Arial,Helvetica"
color="#ffffff">Other</font></b></td>
</tr>
<tr>
<td
valign="top"
align="right">&nbsp;</td>
<td valign="top">
<p>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 <a
href="http://www.eclipse.org/articles/Article-CVS-branching/eclipse_branch.html">here</a>.</p>
</td>
</tr>
</tbody>
</table>
</body>
</html>