Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

At some point someone in the community will call for a release based on the features and fixes that have been under development in the trunk. Typically the first stage in the release process is to decide on who is going to be the release manager, i.e. who is going to ensure that all the steps are taken to ensure a good release. This will typical involve someone volunteering and a vote on the dev list. The next thing is the create a branch where the code can be stabilized and testing can start on the release artifacts. It's useful to try and ensure that the code is complete as possible and that all the samples run before the branch is created. This removes the need for a lot of double fixing between the branch and the trunk.

The commands in this document make use of the following environment variables, and are written in a form suitable for execution in linux or a cygwin shell on windows. If you set up these variables you should be able to just cut and paste the commands as given throughout this document.

Code Block

export PAOUSER=kelvingoodson
export RELEASE=2.0-M5
export CURRENT_TRUNK_LEVEL=2.0-SNAPSHOT
export RC=RC3
export RATJAR=

Create the branch

Code Block
svn copy https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/ https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/branches/sca-java-2.<x>-M<y>$RELEASE  -m "Branch for 2.<x> Milestone <y>$RELEASE"

Once the branch is created the version number in trunk can be updated.

...

Code Block
cd branches
svn co https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/branches/sca-java-2.0-M5java-$RELEASE ./2.0-M5$RELEASE

Remove all the files that are not going to be part of the release, test all the samples and check all of the LICENSE and NOTICE files.

...

Note
title"Tip"

When making changes to a branch or tag that are also relevant to the trunk, it's much easier to apply the changes to the trunk at the time, rather than wait and risk losing the changes. Svn provides a simple one line way to do this with the "svn merge" command. In the root directory of a checked out version of the trunk, if you run a command like the following ...

Code Block
svn merge \-r 674473:674474 [https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/branches/sca-java-2.0-M5] 2.0-M5-RC2

Note how the version numbers in the n:m differ by one, so that you get just the difference in repository state from immediately before the change in question, to the state in question, merged into the file system in the target location (final argument)

then that will apply the same edits as were made in the 674474 commit in the tag; merging them into your checked out version of the current trunk. The earlier you do this, the less likely that svn will present you with conflicts to resolve.

Create Tag

...

$RELEASE-$RC

These commands assume that a local directory called "tags" is present.

Code Block
cd tags
svn co [https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/branches/sca-java-2.0-M5] 2.0-M5-RC2$RELEASE $RELEASE-$RC

Notice that all we are doing here is just checking out the branch again. This allows any last minute fixes to be taken from the branch in subversion and allows the version numbers in the tag to be corrected without affecting the branch, assuming that more than one tag will be required to complete the release process.

...

Code Block
cd tags/2.0-M5-RC2
for i in `/usr/bin/find . \-name "*.xml" \-o \-name "*.java"`; do if grep 2.0-M5$RELEASE-SNAPSHOT $i>/dev/null; then sed "s/2.0-M5$RELEASE-SNAPSHOT/2.0-M5$RELEASE/g" $i >/tmp/tmp.txt; cp /tmp/tmp.txt $i; echo $i; fi; done

...

Code Block
cd tags
java \-jar c:\Dev\downloads\apache-rat-0.7-SNAPSHOT.jar 2.0-M5-RC2$RELEASE-$RC > rat-2.0-M5$RELEASE.txt

Copy the report up onto the staging repo. You should of course check the report at this stage. E.g. with pageant running and your ssh key for people.apache.org registered with pageant

...