| 1 | = Release Engineering = |
| 2 | |
| 3 | == Create a new release branch == |
| 4 | {{{ |
| 5 | svn copy svn+ssh://svn.clozure.com/usr/local/publicsvn/openmcl/trunk \ |
| 6 | svn+ssh://svn.clozure.com/usr/local/publicsvn/openmcl/release/1.5 |
| 7 | }}} |
| 8 | |
| 9 | == Getting a release branch working copy == |
| 10 | When making a new release, it can be convenient to have the whole source tree available. |
| 11 | I do this with: |
| 12 | {{{ |
| 13 | svn co --ignore-externals svn+ssh://svn.clozure.com/usr/local/publicsvn/openmcl/release/1.5 ccl-1.5-all |
| 14 | }}} |
| 15 | This way, I don't end up with useless copies of the sources under the platform-specific directories. |
| 16 | |
| 17 | == Fixing externals == |
| 18 | |
| 19 | I generally think it's preferable for release branches to be self-contained. |
| 20 | This script changes the externals to point to the release branch instead of the trunk. |
| 21 | Run it while in the top-level directory of the working copy. |
| 22 | |
| 23 | {{{ |
| 24 | #!/bin/sh |
| 25 | progname=`basename $0` |
| 26 | for target in darwinppc darwinx86 freebsdx86 linuxppc linuxx86 solarisx86 windows; do |
| 27 | newprops=`mktemp /tmp/${progname}.XXXXXX` || exit 1 |
| 28 | svn propget svn:externals ${target}/ccl | sed -e s,trunk,release/1.5, >$newprops |
| 29 | cat $newprops |
| 30 | svn propset svn:externals ${target}/ccl -F $newprops |
| 31 | rm $newprops |
| 32 | done |
| 33 | }}} |