Coding Standards
================

Please try and stick to the GNU coding standards.  A lot of hard work
went into making Check compatible with the standards, and would be
nice if that work didn't erode.  I decided on the standards because
they work well for a lot of programs much bigger than Check.  Ok,
since you're wondering, the advantages of sticking to the standards
are three-fold:

  1) consistent style within the project

  2) being familiar with the standards lets you work on lots of
     different GNU standards-compliant projects pretty easily

  3) it reduces the number of decisions that must be made

So far, the only intentional deviation from the standards is the use
of `svn log -v > SVNChangeLog' to generate an SVNChangeLog, rather
than manual editing.  Subversion solves many of the problems in CVS,
for which the GNU ChangeLog rules are written, the lack of atomic
commits being one of them.  However, this doesn't work for make
distcheck because it never reaches the SVN working copy, so perhaps a
better mechanism is needed.

Release Process
===============

You need 'release tech' access within the project to do this.

Start in a configured in-place build of trunk.
If you are behind a proxy remember to "socksify" (or similar) your
'make' and 'sftp' commands. Make sure svn works.

1.  Fix your ssh connectivity and accept ssh-keys:
     'sftp <SF_USERNAME>@web.sourceforge.net'
     'sftp <SF_USERNAME>@frs.sourceforge.net'
2.  Decide on a X.Y.Z revision suitable for release.
3.  Update configure.ac with new versions and run
    'svn commit -m "Update for release" configure.ac'
4.  Update NEWS with new version number. Use this format:
    "Mon, Oct 22, 2012: Released Check 0.9.9
       based on r637 (2012-10-22 13:54:14 +0200)"
    Now 'svn commit -m "* Update for release" NEWS'
5.  make SF_USERNAME=username RELEASE_VERSION=X.Y.Z preparerelease
    This will tag trunk as https://svn.code.sf.net/p/check/code/tags/check-X.Y.Z
6.  Follow the prompts. If anything goes wrong see Makefile.am and complete it by hand.
7.  Use the following template to announce the release:
=====
Subject: check-X.Y.Z released
Hi,

<some sentence about the release, e.g. "This is a bug fix release."> 
Please test it out and report any problems you might have.

http://prdownloads.sourceforge.net/check/check-X.Y.Z.tar.gz?download

Thanks,
`whoami`

<paste contents of NEWS-release here>
=====
8.  Follow the remaining prompts.



Update website
==============
If the website needs to be updated outside of a release,
the following can be done.

1. Fix your ssh connectivity and accept ssh-keys, as
   mentioned in the release process above.
2. Upload the index.html file and web folder to Sourceforge
   from your workspace with the following:
   make SF_USERNAME=username updateweb

The changes to the webpage on Sourceforge should take affect
a few minutes after the upload.
