blob: ac298cbf04221eaa81ffe526c228e70fb1031ff7 [file] [log] [blame]
<?xml-stylesheet type="text/xsl" href="../../wtphome.xsl"?>
<html>
<head>
<title>Web Tools Platform 0.7 maintenance stream proposal</title>
<meta name="root" content="../../.." />
</head>
<body>
<h1>WTP 0.7 maintenance stream proposal</h1>
<p align="right"><em>Updated 2005-08-03</em></p>
<h2>Introduction</h2>
<p>
Branch name: <b>R0_7_maintenance</b>
</p>
<p>
The process described in this document follows the maintenance release process used by the
Eclipse platform project. This process requires us to branch all the build related project.
In WTP, that would be the <b>releng</b> and the <b>releng.builder</b> project. Unlike the build
projects, plug-in projects and feature projects will be branched on demand, meaning we need to
branch them when a fixed is needed in the maintenance stream.
</p>
<p>
There will not be any "HEAD" build for the maintenance stream. That means a maintenance build will
always be built from the branched map files. The advantage for this approach is that we don't need
to branch everything. If we want to do "HEAD" builds in the maintenance stream, then all plug-ins/features need
to be branched regardless of whether changes are made to them or not. To keep things simple, let's
stay away from "HEAD" builds. This means, you need to release all your changes before they would
actually show up in a maintenance build. Releasing changes to the maintenance stream is the same
as releasing changes to the 1.0 stream. The only difference is that you MUST release to the branched
map files, not the HEAD map files.
</p>
<h2>Creating a branch for a plug-in/feature</h2>
<p>
Creating a branch for a plug-in/feature is fairly easy, here's a laundry list of what needs to be done:
<ol>
<li>Check out the plug-in/feature project that you want to branch.</li>
<li>Right click on the project > Team > Branch...</li>
<li>Enter <b>R0_7_maintenance</b> as the branch name > OK.</li>
<li>That's it. You have successfully created a branch. The following figures show you the
difference between a HEAD branch project and a 0.7 maintenance branch project.</li>
</ol>
</p>
<p>
<img src="figure1.gif"/>
<img src="figure2.gif"/>
</p>
<h2>Checking out from a branch</h2>
<p>
To check out from a branch:
<ol>
<li>Create a CVS location just like you normally would.</li>
<li>Expand the HEAD branch, and right click on the project that you want to work with > Configure Branches and Versions...</li>
<li>A dialog opens. In the <b>Browse files for tags</b> section of this dialog (top left region), select any file that has
been branched. For example (I branched the <b>component-api.xsd</b> file for testing purposes)
<br/><img src="figure3.gif"/>
</li>
<li>Once you have selected the file, the <b>New tags found in the selected files</b> section (top right region) should be
updated with the 0.7 maintenance branch name. Make sure only the <b>R0_7_Maintenance</b> branch is checked.</li>
<li>Click on the <b>Add Checked Tags</b> button.</li>
<li>Click <b>OK</b>.</li>
<li>A new branch should be created in your CVS location. You can check out and commit to branch just like the HEAD branch.
<br/><img src="figure4.gif"/>
</li>
</ol>
</p>
<p>
For changes that need to go into both the HEAD and 0.7 branch, I find that retrofitting/merging changes manually is the easiest.
Since our 0.7 branch is limited to critical and NL fixes only, there shouldn't be too much work. However, if you like the Eclipse
CVS tools, they do come with some merging tool that you can use. It helps you merge 0.7 branch change back into HEAD.
This <a href="http://www.eclipse.org/articles/Article-CVS-branching/eclipse_branch.html">article</a> talks about this tool.
</p>
<h2>Tracking 0.7 maintenance fixes in bugzilla</h2>
<p>
We now have a <b>1.0 M7.1</b> target in bugzilla. I suggest when a fix is retrofitted from the 1.0 stream
to the 0.7 maintenance stream, we change the target of the corresponding bug to <b>1.0 M7.1</b>.
We can then create a bugzilla query to see what fixes went into the maintenance stream.
</p>
</body>
</html>