
    RELEASE MANAGEMENT
    ==================

   0)
    # Optional: Do a vote if a release shall be done
    # Send email to dev@lenya.apache.org with Subject: [VOTE] Release 1.2.5


   1)
    # Announce the freeze 7 days ahead of the actual freeze:
    # Send email to dev@lenya.apache.org with subject: [FREEZE-ANNOUNCEMENT]

   
   2)
    # Remind of the actual freeze:
    # Send email to dev@lenya.apache.org with subject: [FREEZE-REMINDER]


   3)
    # Create tagged version
    # Browse to http://svn.apache.org/repos/asf/lenya/branches/BRANCH_1_2_X
    # http://svnbook.red-bean.com/en/1.1/ch04s06.html

    svn co -r 373588 https://svn.apache.org/repos/asf/lenya/branches/BRANCH_1_2_X
    cd branches/BRANCH_1_2_X
    svn copy branches/BRANCH_1_2_X tags/RELEASE_1_2_5
    svn ci -m "Release 1_2_5 added" tags/RELEASE_1_2_5


   4)
    # Add release notes (SVN URL, SVN Revision, What's new, Cocoon version 2.1.8, etc.):

    svn add RELEASE-NOTES.txt
    svn ci -m "release notes added" RELEASE-NOTES.txt
    

   5)
    # Lock tagged version (Is this really necessary or just a project policy)

    #??? svn lock tags/RELEASE_1_2_5


   6)
    # Start testing this tagged version (based on the specified Cocoon version, e.g. 2.1.8)
    # Use Test-Suite: http://wiki.apache.org/lenya/TestCases
    # Maybe do a sprint over IRC irc.freenode.org#lenya

    # If tests are successfull, then freeze can be canceled
    # If tests fail, then ...


   7)
    # Release source and binary versions based on this tagged version
