Free and Open Source real time strategy game with a new take on micro-management

Difference between revisions of "Releasing a new version"

From Globulation2

Jump to: navigation, search
Line 5: Line 5:
# cp -a <old directory name> <new directory name>
# cp -a <old directory name> <new directory name>
# cd <new directory name>
# cd <new directory name>
# cvs update
# hg pull && hg update
# cvs tag -b <release tag name>-rc
# hg tag -b <release tag name>-rc
# cvs update -r <release tag name>-rc
# hg pull && hg update -r <release tag name>-rc
Normal glob2 development takes place in the original HEAD (i.e. MAIN)
Normal glob2 development takes place in the original HEAD (i.e. MAIN)
branch as usual.
branch as usual.
Line 15: Line 15:
# cp -a <old directory name> <new directory name>
# cp -a <old directory name> <new directory name>
# cd <new directory name>
# cd <new directory name>
# cvs update -r <release tag name>-rc
# hg pull && hg update -r <release tag name>-rc
And also every bugfix must be done for both branches HEAD and the release candidate to avoid cvs merging weaknesses.
<!--And also every bugfix must be done for both branches HEAD and the release candidate to avoid cvs merging weaknesses.-->


* Put a line like: "Changes in <release tag> (release soon)" under "Changes since latest release" in: [http://globulation2.org/wiki/Changes Changes]
* Put a line like: "Changes in <release tag> (release soon)" under "Changes since latest release" in: [http://globulation2.org/wiki/Changes Changes]
* Increment version number in configure.in
* Increment version number in configure.in
* Increment Debian version number by doing debchange -i in debian/ (this must be done by nct on the mailing list)
* Increment Debian version number by doing debchange -i in debian/ (this must be done by nct on the mailing list)
* Do a release dry run, i.e.: all the release steps below except the "cvs tag" and only propagate news about a release candidate - not a release.
* Do a release dry run, i.e.: all the release steps below except the "hg tag" and only propagate news about a release candidate - not a release.
* Now wait about a week.
* Now wait about a week.


Line 29: Line 29:


# Go into the directory containing glob2 the release candidate
# Go into the directory containing glob2 the release candidate
# Check that the local cvs is up to date (through "cvs up")
# Check that the local mercurial is up to date (through "hg pull && hg update")
# Check that all the required graphics and maps are in the server (through "./mkdata" and "./mkmap")
# Check that all the required graphics and maps are in the server (through "./mkdata" and "./mkmap")
# Run "make distclean"
# Run "make distclean"
Line 37: Line 37:
# Run "make"; if any problem occurs, well, the release candidate is *still* not ready for release!
# Run "make"; if any problem occurs, well, the release candidate is *still* not ready for release!
# Test the resulting binary; if any problem occurs, well, you should fix your code instead of releasing stuff!
# Test the resulting binary; if any problem occurs, well, you should fix your code instead of releasing stuff!
# Run "cvs tag RELEASE_NAME", in order to tag the CVS so that packagers can fetch this *exact* source tree for this release
# Run "hg tag RELEASE_NAME", in order to tag the Mercurial so that packagers can fetch this *exact* source tree for this release
# Run "make dist" to make the .tar.gz
# Run "make dist" to make the .tar.gz
# Run "fakeroot debian/rules binary" to make the debian package
# Run "fakeroot debian/rules binary" to make the debian package

Revision as of 01:47, 22 April 2007

Test phase

  • First thing to do when planning a release is to propose it.
  • If no-one complains branch off a release candidate which must be used for testing and bugfixing only - and finally will be released:
# cp -a <old directory name> <new directory name>
# cd <new directory name>
# hg pull && hg update
# hg tag -b <release tag name>-rc
# hg pull && hg update -r <release tag name>-rc

Normal glob2 development takes place in the original HEAD (i.e. MAIN) branch as usual.

  • Now announce that you branched off the release candidate and that everyone who wants to help testing or fixing it must do:
# cp -a <old directory name> <new directory name>
# cd <new directory name>
# hg pull && hg update -r <release tag name>-rc
  • Put a line like: "Changes in <release tag> (release soon)" under "Changes since latest release" in: Changes
  • Increment version number in configure.in
  • Increment Debian version number by doing debchange -i in debian/ (this must be done by nct on the mailing list)
  • Do a release dry run, i.e.: all the release steps below except the "hg tag" and only propagate news about a release candidate - not a release.
  • Now wait about a week.

Release phase

Here is a detailed description of the remaining release process applied for all the alpha releases:

  1. Go into the directory containing glob2 the release candidate
  2. Check that the local mercurial is up to date (through "hg pull && hg update")
  3. Check that all the required graphics and maps are in the server (through "./mkdata" and "./mkmap")
  4. Run "make distclean"
  5. Set CXXFLAGS to "-O2 -g $CXXFLAGS", final release could be compiled without the -g and with -O3 but right now -g -O2 is a reasonable tradeoff between speed and debugability
  6. Run "./bootstrap"
  7. Run "./configure"; if any problem occurs, well, the release candidate is not ready for release!
  8. Run "make"; if any problem occurs, well, the release candidate is *still* not ready for release!
  9. Test the resulting binary; if any problem occurs, well, you should fix your code instead of releasing stuff!
  10. Run "hg tag RELEASE_NAME", in order to tag the Mercurial so that packagers can fetch this *exact* source tree for this release
  11. Run "make dist" to make the .tar.gz
  12. Run "fakeroot debian/rules binary" to make the debian package
  13. Upload them to Savannah in the folder relating to their version (for example, alpha22 = 0.8.22/).
  14. Send a mail to the ml, update web site, savannah news, and rest of the Worlds about the "Good news" ;-)
Misc