Cooking a new release.
The versions of the GIP should generally follow that of the OSG. So, gip_0_8_0_rc1 is a release candidate for the OSG 0.8.0; gip_1_0_0_rc1 is a release candidate for the OSG 1.0.0. Internal testing tags should be suffixed with
alpha designations, tags which go out to the VTB should get
beta designations, and tags ready for the ITB are
release candidate.
So, an alpha release might be
gip_0_8_0_alpha1, a beta would be
gip_0_8_0_beta1, and a release candidate is
gip_0_8_0_rc1. The following rules should be applied:
- Alphas are unstable code which has been written but perhaps doesn't work. Certainly they haven't been tested on a wide range of platforms outside the developer's laptops. Major API changes may happen.
- Betas are semi-stable code. They are ready for consumption by folks who aren't developers, but know that the code is likely to change (just not significantly). The changes will mostly be bugfixes at this stage.
- Release candidates should be stable code that, in the absence of any discovered blocking bugs, are ready to be released as-is to production.
- Production releases should be stable, relatively bug-free, and generally run without a problem.
Branches versus Trunk
When a release is pending (code is perhaps beta stage) it's often a good idea to cut a new branch. This allows developers who want to do major infrastructure work to continue working, but still fix bugs in code.
Ideally, there should be at most two active branches at any given time:
- Production branch: Contains code already in production. It should change very little, if not at all.
- Pending release branch: Contains code which is being prepared for release. It should be getting mostly bugfixes (but may get a lot of them); no major changes should happen here
- Trunk: Major overhaul work, plus forward-porting any bugfixes discovered on the other branches.
SVN work
Do these commands from the top-level
gip/ directory.
To create a branch:
svn cp trunk branches/branch_name
To tag a branch (from the top-level gip/ directory):
svn cp branches/original tags/gip_0_8_0_rc2
To tag something from trunk:
svn cp trunk tags/gip_1_0_0_alpha0
To create a VDT-friendly tarball in /tmp:
$GIP_LOCATION/make_release.sh tag_name
To examine differences between two releases (i.e.: for generating a ChangeLog)
svn diff svn://t2.unl.edu/brian/gip/tags/gip_1_0_0_rc1 svn://t2.unl.edu/brian/gip/tags/gip_1_0_1
--
BrianBockelman - 12 Mar 2008