= Release Engineering = == Create a new release branch == {{{ svn copy svn+ssh://svn.clozure.com/usr/local/publicsvn/openmcl/trunk \ svn+ssh://svn.clozure.com/usr/local/publicsvn/openmcl/release/1.5 }}} == Getting a release branch working copy == When making a new release, it can be convenient to have the whole source tree available. I do this with: {{{ svn co --ignore-externals svn+ssh://svn.clozure.com/usr/local/publicsvn/openmcl/release/1.5 ccl-1.5-all }}} This way, I don't end up with useless copies of the sources under the platform-specific directories. It also makes sense to remember to say {{{ svn up --ignore-externals }}} to avoid picking up the useless copies of the sources later. == Fixing externals == I generally think it's preferable for release branches to be self-contained. This script changes the externals to point to the release branch instead of the trunk. Run it while in the top-level directory of the working copy. {{{ #!/bin/sh progname=`basename $0` for target in darwinppc darwinx86 freebsdx86 linuxppc linuxx86 solarisx86 windows; do newprops=`mktemp /tmp/${progname}.XXXXXX` || exit 1 svn propget svn:externals ${target}/ccl | sed -e s,trunk,release/1.5, >$newprops cat $newprops svn propset svn:externals ${target}/ccl -F $newprops rm $newprops done }}}