Having a look at the release scripts and how they work. 

I think we can use SVN and its branches/tags in a bit smarter way
and make things easier. As Christophe mentioned, he would like a
"--dry-run" option, because when things do not run smoothly to the
end, you have not only a local messed-up state but the SVN repro
itself is also changed without easy remedies.

I propose to do all work up to release testing in separate,
temporary branches that can simply be removed and restarted.
This would not require a rewrite of the release scripts, but
some re-ordering and branch name changes.

- checkout branches/2.4.x
  - make sure change-entries are merged, commit
  - test branch locally for health
  - svn cp . branches/2.4.49-tmp
- svn switch to branches/2.4.49-tmp
  - update versions, build docs, etc on that
  - commit this into branches/2.4.49-tmp
  - svn mv branches/2.4.49-tmp branches/2.4.49-candidate
- svn switch to branches/2.4.49-candidate
  - create tar files and signature from -candidate
  - make them available for testing
  - announce release voting
#
# everything up to here can be reverted by "svn rm"
#
- switch to branches/2.4.x 
  - bump versions in branches/2.4.x to 2.4.50

- Stefan

-------------------------------------------------------------------------
Summary of what the release process involves and what each script does:
0. tag.sh
   svn checkout $HEAD of branch
   check version numbers
   check SVN tag for version does not exist
   check PGP/GPG key in httpd-dist/KEYS
   update Copyright in docs/manual/style/xsl/common.xsl
   checkout docs-build, build docs, remove docs-build checkout
   run "update-changes" using Makfile.in
   Set AP_SERVER_DEVBUILD_BOOLEAN to 0 in include/ap_release.h
   svn commit all changes
   Change local include/ap_release.h back
   bump up patch version in CHANGES, STATUS, docs/manual/style/version.ent
   before committing this, copy $HEAD of branch to tags/$version
   svn commit the bump-up changes to branch
1a. release.sh
   svn export $HEAD of branches/2.4.x
   svn export of dependencies (APR)
   apply patches (currently broken)
   prepare CHANGES_<version>
   invoke roll.sh
1b. roll.sh
   run releasecheck.sh (checking libtool availability? for what?)
   remove files not wanted in release (fixed list)
   touch .y dependants (fixed list)
   remove doc sources (*.xml *.xsl)
   move srclib into -deps sibling directory
   build tar balls
   build checksum files (lots of alternatives if openssl is not found, do we 
need that?)
   signing the files
   substitute new version number in various files
2. voting
3. push.sh
   checkout https://dist.apache.org/repos/dist/
   remove old CHANGES_$major.minor
   generate new CHANGES_$version, CHANGES_$major.minor
   modify Announcement$major.minor
   svn move generated tar, deps and CHANGES
   svn commit
4. update bugzilla
5. announce.sh
   lots of messing with dist and pmc to get security details in
   some sanity checks
   send mails
   send more mails
   svn commit changes to "$dist_base" "$branch_base" "$private_base" 
"$site_base"

Reply via email to