<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style type="text/css"> /* <![CDATA[ */
  @import "branding/css/tigris.css";
  @import "branding/css/inst.css";
  /* ]]> */</style>
<link rel="stylesheet" type="text/css" media="print"
  href="branding/css/print.css"/>
<script type="text/javascript" src="branding/scripts/tigris.js"></script>
<title>The Subversion Release Procedure</title>
</head>

<body>
<div class="app">

<h1 style="text-align: center;">The Subversion Release Procedure</h1>

<p>If you are the current Release Manager for the Subversion project,
or aspire to be, you should read and follow this procedure.</p>

<pre>
$LastChangedDate: 2006-04-03 18:57:54 +0200 (Mon, 03 Apr 2006) $
</pre>

<![CDATA[=========================================================]]>

<!-- Other pages seem to use "h2" for ToC, but I think "h1" works
     better, because the ToC is fundamentally different from other
     sections and therefore it's confusing when it looks the same as
     the others. -->
<div class="h1"><!-- no 'id' or 'title' attribute for ToC -->
<h1>Table of Contents</h1>

<ul>
<li><a href="#release-manager-role"
             >Being the Release Manager</a></li>
<li><a href="#release-branches"
             >Creating and maintaining release branches</a></li>
<li><a href="#porting-changes"
             >Porting changes to release branches</a></li>
<li><a href="#the-changes-file"
             >Managing the CHANGES file</a></li>
<li><a href="#before-release"
             >Preparing to roll a release</a></li>
<li><a href="#rolling-release"
             >Rolling a release</a></li>
<li><a href="#blessing-release"
             >Blessing a release</a></li>
<li><a href="#releasing-release"
             >The actual releasing</a></li>
</ul>

</div>

<![CDATA[=========================================================]]>

<div class="h2" id="release-manager-role" title="release-manager-role">
<h2>Being the Release Manager</h2>

<p>The role of the Release Manager in the Subversion project is to
handle the process of getting code stabilized, packaged and released
to the general public.  If we were building planes, the RM would be
the guy looking at the construction checklists, painting the airline
logo on the fuselage, and delivering the finished unit to the
customer.</p>

<p>As such, there is no real development associated with being an RM.
All the work you have to do is non-coding: coordinating people,
centralizing information, and being the public voice announcing new
stable releases.  A lot of the tasks that the RM has to do are
repetitive, and not automated either because nobody has broken down
and written the tools yet, or because the tasks require human
validation that makes automation a little superfluous.</p>

<p>You may be thinking at this stage that the RM's duty is
unglamorous, and you are kinda right.  If you are looking for a
position within the project that will bring fame and fortune, you're
better off implementing stuff that really needs to be done on trunk.
If you're looking for something that really helps people who don't
care about releases focus on code, then RMing is for you.</p>

<p>So, you are the Release Manager.  What do you need to do?  This is
what the rest of this document is about.</p>

</div>

<![CDATA[=========================================================]]>

<div class="h2" id="release-branches" title="release-branches">
<h2>Creating and maintaining release branches</h2>

<p>A new release branch is created for each new major and minor
release.  So, for example, a new release branch is created when
preparing to release version 2.0.0, or version 1.3.0.  However, when
preparing to release 1.3.1 (a patch-version increment), the release
branch created at the time of 1.3.0 is used.</p>

<p>If you are preparing for a patch release, then there is no release
branch to create. You just pick up where you left off in the current
minor version series release branch.</p>

<p>The time at which a new release branch needs to be created is fuzzy
at best.  Generally, we have a soft schedule of releasing a new minor
version every 6 months.  So, approximately 4 months after the previous
minor release is a good time to start proposing a branch. But remember
that this is flexible, depending on what features are being
developed.</p>

<p>Once people agree that a new release branch should be made, the
Release Manager creates it with the following procedure (substitute
A.B with the version you're preparing, eg. 1.3, or 2.0):</p>

<ul>
<li><p>Create the new release branch with a server-side copy:</p>
    <pre>
      svn cp http://svn.collab.net/repos/svn/trunk \
             http://svn.collab.net/repos/svn/branches/A.B.x \
             -m "Create A.B.x release branch."
    </pre></li>

<li><p>Edit <tt>subversion/include/svn_version.h</tt> on trunk and
    increment the version numbers there.  Do not commit these changes
    yet.</p>
    <p>The version number on trunk always reflects the major/minor
    version that will immediately follow the one for which you just
    created a branch (eg. 2.1.0 for the 2.0.x branch, and 1.4.0 for
    the 1.3.x branch).</p></li>

<li><p>Edit <tt>CHANGES</tt> on trunk to introduce a new section for the
    upcoming release.  The section starts with:</p>
    <pre>
      Version A.B.0 (released ?? ????? 200X, from /branches/A.B.x)
      http://svn.collab.net/repos/svn/tags/A.B.0
    </pre>
    <p>Leave the release date blank for now. It will remain this way
    until rolling time.</p></li>

<li><p>Commit both these changes with the following log message:</p>
    <pre>
      Increment the trunk version number, and introduce a new CHANGES
      section for the upcoming A.B.0 release.

      * subversion/include/svn_version.h: Increment version number.

      * CHANGES: New section for A.B.0.
    </pre></li>
</ul>

</div>

<![CDATA[=========================================================]]>

<div class="h2" id="porting-changes" title="porting-changes">
<h2>Porting changes to release branches</h2>

<p>Once a release branch has been created, no development <i>ever</i>
takes place there.  The only changes permitted are ones made to
various bookkeeping files such as <tt>STATUS</tt>, and changes merged
in from trunk.</p>

<p>The protocol used to accept or refuse the merging of changes from
trunk is of interest to all Subversion developers, and as such is
documented in <a
href="hacking.html#release-stabilization">the
release stabilization section of the hacking guide</a>.</p>

</div>

<![CDATA[=========================================================]]>

<div class="h2" id="the-changes-file" title="the-changes-file">
<h2>Managing the CHANGES file</h2>

<p>The <tt>CHANGES</tt> file is the project changelog file.  Before a
release, it must be brought up to date to list all changes since the
last release.</p>

<p>For patch-releases, this is fairly easy: you just need to walk
through the commit logs for the branch since the last "golden"
revision, and note all interesting merges.  For minor and major
releases, this is more complex: you need to traverse the commit log on
<em>trunk</em> since the last release branch was forked, and make note
of all changes there.  It's the same procedure, but a lot longer, and
somewhat more complex as it involves filtering out changesets that
have already been backported to previous release branches and released
from there.</p>

<p>Remember that <tt>CHANGES</tt> should <em>always</em> be edited on
trunk and then merged over to the release branch(es) when necessary.
It is very important that all changes of all releases be documented in
the CHANGES file on trunk, both for future reference and so that
future release branches contain the sum of all previous change
logs.</p>

<p>Keep the bullet point for each change concise, preferably no more
than one line long.  Sometimes that can be a challenge, but it really
adds to the overall readability of the document.  Think to yourself:
<i>If it takes more than one line to describe, maybe I'm getting too
detailed?</i></p>

<div class="h3" id="writing-initial-changes" title="writing-initial-changes">
<h3>Writing the initial content for a branch</h3>

<p>Run <code>svn log -rHEAD:BRANCH_POINT
http://svn.collab.net/repos/svn/branches/A.B.x</code>,where
BRANCH_POINT is the revnum where the previous major/minor release was
branched off of the trunk.  This should give you every change ever
made to the A.B.x line, including backports made to the A.B.x branch.
You then need to <em>remove</em> logs of changes that have already
been released in micro releases of the previous major/minor branch.
Run <code>svn log -q --stop-on-copy</code> on the previous release
branch, and then write a script to parse the revnums and remove them
from your primary log output.  (Karl and Ben used to use emacs macros
to do that, but suggest that we write a more general script.)</p>

<p>Read that log from oldest to newest, summarizing points as you go.
The trick is to know what level of detail to write at: you don't want
to mention every tiny little commit, but you don't want to be too
general either.  Set your filter-level by reading through a few pages
of the CHANGES file before starting on the new section, just to keep
things consistent.</p>

</div>  <!-- writing-initial-changes -->

<div class="h3" id="adding-changes">
<h3>Adding content for patch release</h3>

<p>TODO</p>

</div>  <!-- adding-changes -->

</div>  <!-- the-changes-file -->

<![CDATA[=========================================================]]>

<div class="h2" id="before-release" title="before-release">
<h2>Preparing to roll a release</h2>

<p>So, a release branch has stabilized, and you are gearing up to roll
the release.  Before you can actually roll the archives, you need to
set up a white-room rolling environment.  This environment must
contain pristine versions of some build tools, as well as all the
relevant dependancies and other stuff that gets bundled into a
release tarball.</p>

<p>You need to grab vanilla source tarballs of the following build
tools before proceeding:</p>

<ul>
<li><p><b>Autoconf</b> 2.59 (2.60 is a significant compatibility break
from the 2.5x series, and is known to break APR)</p></li>
<li><p><b>Libtool</b> 1.5.22</p></li>
<li><p><b>SWIG</b> 1.3.25</p></li>
</ul>

<p>It is important that you do not use distribution shipped versions
of this software as they are often patched in ways that are not
portable.  The version numbers given above should normally be
reconsidered and increased to the latest stable upstream release in
the time leading up to an A.B.0 release.  Changing the version within
an A.B.x series should only be done with careful considereration.</p>

<p>Also grab the following source tarballs, parts of which will be
bundled in the Subversion release packages:</p>

<ul>
<li><p>The latest Unix <b>APR</b> and <b>APR-util</b> of the 0.9.x
line (currently 0.9.12)</p></li>
<li><p>The latest Win32 <b>Apache HTTP Server</b> release.  From this
zipfile, we will use the APR, APR-util and APR-iconv bundled
libraries.  Note that we should be using the win32 APR zipfiles, but
they currently have EOL issues on the win32 zipfiles.  Check whether
this has been fixed, and start using those if it has. (and edit this
document to reflect this)</p></li>
<li><p>The latest <b>Neon</b> 0.25.x release (currently
0.25.5)</p></li>
<li><p>The latest <b>zlib</b> release (currently 1.2.3)</p></li>
</ul>

<p>Once you have all this, you can start the following procedure.
When it is done, you will have a build environment ready to roll
tarballs.</p>

<p><b>Autoconf, Libtool and SWIG</b>: Pick a directory to contain your
special build tools for Subversion RM duties - for example
<tt>/opt/svnrm</tt>.  Configure, build and install the three pieces of
software with <tt>--prefix=/opt/svnrm</tt>, and remember, whenever you
run <tt>dist.sh</tt> to be sure that <tt>/opt/svnrm/bin</tt> is at the
front of your <tt>PATH</tt>.</p>

<p><b>Dependency source preparation</b>: You should create two
directories which will hold the dependencies which will be repackaged
with Subversion, one for Unix and one for Win32.  You might, for
example, choose <tt>/opt/svnrm/unix-dependencies</tt> and
<tt>/opt/svnrm/win32-dependencies</tt>.  Within the Unix one, you must
unpack the Unix APR and APR-util tarballs, and the Neon and zlib
tarballs, and then rename each top level directory so it does
<b>not</b> contain a version number, resulting in a directory
containing four directories: <tt>apr</tt>, <tt>apr-util</tt>,
<tt>neon</tt> and <tt>zlib</tt>.  Within the Win32 one, you must
unpack the Apache HTTP Server zipfile, move the <tt>apr</tt>,
<tt>apr-util</tt> and <tt>apr-iconv</tt> directories from the
<tt>srclib</tt> directory of the <tt>httpd</tt> zipfile into the
dependency directory, and delete the rest of the <tt>httpd</tt>
extract.  You must then copy the <tt>neon</tt> and <tt>zlib</tt>
directories from the Unix dependency directory into the Win32 one too.
Do not use symlinks, <tt>dist.sh</tt> does not support them.</p>

</div>

<![CDATA[=========================================================]]>

<div class="h2" id="rolling-release" title="rolling-release">
<h2>Rolling a release</h2>

<p>Before rolling, first make sure that the latest version of the
CHANGES file from trunk is merged into the release branch, and that
the date at the top of CHANGES matches the planned release date of the
tarball.</p>

<p><b>Build the tarballs</b>: From within your Unix dependency
directory, run:</p>
<pre>
PATH="/opt/svnrm/bin:$PATH" ./dist.sh -v X.Y.Z -r 1234 -pr branches/X.Y.Z
</pre>
<p>Watch <tt>dist.sh</tt>'s output to make sure everything goes
smoothly; when it's done, you'll have tarballs in the cwd.</p> 
 
<p><b>Build the zipfiles</b>: From within your Win32 dependency
directory, run:</p>
<pre>
PATH="/opt/svnrm/bin:$PATH" ./dist.sh -v X.Y.Z -r 1234 -pr branches/X.Y.Z -zip
</pre>
<p>Watch <tt>dist.sh</tt>'s output to make sure everything goes
smoothly; when it's done, you'll have zipfiles in the cwd.</p> 
 
<pre>
9.  Test one or both of the tarballs:
 
    a) tar zxvf subversion-X.Y.Z.tar.gz;  cd subversion-X.Y.Z
    b) ./configure
 
       See INSTALL, section III.B for detailed instructions on
       configuring/building Subversion.
 
       If you installed Apache in some place other than the default, as
       mentioned above, you will need to use the same
       --prefix=/usr/local/apache2 option as used to configure Apache.
 
       You may also want to use --enable-mod-activation, which will
       automatically enable the required Subversion modules in the
       Apache config file.
 
    c) make
    d) make check
    e) make install (this activates mod_dav)
    f) make davcheck
 
       For this, start up Apache after having configured according to
       the directions in subversion/tests/cmdline/README.
 
       Make sure, that if you maintain a development installation of
       apache, that you check the config file and update it for the
       new release area where you're testing the tar-ball.
 
       (Unless you rename the tree which gets extracted from the
       tarball to match what's in httpd.conf, you will need to edit
       httpd.conf)
 
    g) make svncheck
 
       First, start up svnserve with these args:
 
          $ subversion/svnserve/svnserve -d -r \
            `pwd`/subversion/tests/cmdline
 
       -d tells svnserve to run as a daemon
       -r tells svnserve to use the following directory as the
          logical file system root directory.
 
       After svnserve is running as a daemon 'make svncheck' should run
 
    h) Then test that you can check out the subversion repository
       with this environment:
 
          subversion/svn/svn co https://svn.collab.net/repos/svn/trunk
 
    i) Verify that the perl and python swig bindings at least compile.
       If you can't do this, then have another developer verify.
 
       (see bindings/swig/INSTALL for details)
 
       Ensure that ./configure detected a suitable version of swig,
       perl, and python.  Then:
 
          make swig-py
          make check-swig-py
          sudo make install-swig-py
 
          make swig-pl
          make check-swig-pl
          sudo make install-swig-pl
 
    j) Verify that the javahl bindings at least compile.
       If you can't do this, then have another developer verify.
 
       (see bindings/java/javahl/README for details)
 
       Ensure that ./configure detected a suitable jdk, and then
       possibly re-run with '--enable-javahl' and '--with-jdk=':
 
          make javahl
          sudo make install-javahl
          make check-javahl

10. Use GPG to sign release. 

    gpg -b --armor subversion-X.Y.Z.tar.gz
    gpg -b --armor subversion-X.Y.Z.tar.bz2
    gpg -b --armor subversion-X.Y.Z.zip
</pre>

</div>

<![CDATA[=========================================================]]>

<div class="h2" id="blessing-release" title="blessing-release">
<h2>Blessing a release</h2>
</div>

<![CDATA[=========================================================]]>

<div class="h2" id="releasing-release" title="releasing-release">
<h2>The actual releasing</h2>

<pre>
11. Create the tag with the svn_version.h that reflects the final release.
    You do this by updating your working copy to the release revision, 1234 in
    the example below.  Run svnversion to verify that you do not have a mixed
    working copy or modified working copy, i.e. svnversion outputs only the
    release revision (not 1234:1235 or 1234M).  Then place the 
    svn_version.h.dist file in place in the working copy and copy from
    the working copy to the tag URL.

    For example:
      
       svn up -r 1234
       svnversion .
       cp svn_version.h.dist subversion/include/svn_version.h
       svn cp . \
              https://svn.collab.net/repos/svn/tags/X.Y.Z \
              -m "Tagging release X.Y.Z with svn_version.h matching tarball"

    Note: Please always make a tag, even for release candidates.

12. Upload the tarballs to http://subversion.tigris.org/downloads/.

    The RM will be given details on how to do this via private channels.

13. Link to the tarballs from the Downloads page:

       http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=260

    a) Log into http://subversion.tigris.org/
    b) Click on the 'Downloads link (left frame at the top)
    c) Click on the 'Source tarballs' link (main frame)
    d) Click on the 'Add a file' link (top, main frame, under 'File Sharing')
    e) Fill in the following fields:

       Name: subversion-X.Y.Z.tar.gz (replace X.Y.Z with the release number)
       Status: Stable
       Description: Subversion release X.Y.Z (MD5: &lt;md5sum of tarball&gt;)
       Contents: (choose 'Link', then enter
           http://subversion.tigris.org/downloads/subversion-X.Y.Z.tar.gz)

    f) Click Submit

14. Bump the svn_version.h for the original branch.

    Modify subversion/include/svn_version.h.  If you just did 1.0.2
    then svn_version.h should have the proper values for 1.0.3 and so
    on.

15. Update the website.

   a) Edit the www/project_status.html file appropriately in /trunk *NOT*
      in the release branch and commit. Remember edit a search term at the
      end of release's issue link. 

      If you used 'svn switch' in 3b above, you can simply 'switch' back
      to /trunk using:

         svn switch https://svn.collab.net/repos/svn/trunk

      then edit the www/project_status.html file appropriately.

   b) Update the best available version at the top of www/project_packages.html

   c) Commit the modifications.

16. Post news item http://subversion.tigris.org/servlets/ProjectNewsAdd,
    and send an announcement to dev@, users@, and announce@ lists.
    Remember to include the URL and MD5 checksums in the announcement!

    Note that the subversion.tigris.org news item is in HTML format not
    plain text.  A tigris.org user with RM or higher status must approve
    the subversion.tigris.org news item.

    For the email to the lists, ensure that your mailer doesn't wrap over
    80 character lines.

    You should also notify freshmeat of the new release:

       http://freshmeat.net/projects/subversion/

    You need to be listed as a release manager or admin on Freshmeat.
    Contact one of the folks listed on the Subversion project page for
    access.  Your submission will also be tweaked by the freshmeat crew
    before it goes public.

17. Once the announcement has shown up, update the "Latest Release"
    section of www/index.html to point to it.

18. Someone with administrative access should upgrade svn.collab.net
    to head.  (This is not usually the release manager.)

19. If you've made it this far, go and enjoy your $favorite_beverage now.
</pre>
</div>

</div>
</body>
</html>
