Gri release procedure
=====================

The list below is the typical procedure leading up to a release, where
"DEK" is the primary author, and "PSG" is the debian packager.

1. DEK fixes a bug or adds a feature, and then indicates this by
   updating ``configure.ac`` and ``doc/gri.texi``.  (The latter file
   needs updating both near the top, where the new and old versions
   are numbered explicitly, and also at the History section.).  Then
   he does a ``git-push``, and asks PSG to ``git-pull`` it.

2. PSG updates various debian files, does a ``git-push``, and asks DEK
   to do a ``git-pull``.

3. DEK verifies that the build works.  Then he makes a tarball and
   sends it to PSG for testing.

4. PSG tests it.  Steps 1--3 are repeated if there is a problem,
   otherwise he tells DEK that the tarball is OK.

5. DEK uploads the tarball to SourceForge and makes the release.

6. PSG does the debian release.


Working with issues and branches
================================

Suppose we want to fix issue3 on github
(http://github.com/dankelley/gri/issues/#issue/3).  We want to be able
to work from two machines, so we need a remote branch.  Here's what we
do:

1. Do ``git branch issue3`` to create a local branch.  Note that the
   branch name matches the issue name.

2. Do ``git push origin issue3`` to put this branch on the remote repo.

Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:dankelley/gri.git
 * [new branch]      issue3 -> issue3

3. Do ``git branch -d issue3`` to remove the local branch.

4. Do ``git checkout --track origin/issue3`` to track the remote
   branch.

5. Fix the bug in this branch.  (If working on several machines, be
   sure to always do a ``git checkout issue3`` and then ``git pull``
   to update the branch before editing anything.)

6. Do ``git checkout master`` to return to the master branch.

7. Do ``git merge --no-ff issue3`` to merge this in.  (The ``no-ff``
   is important, because it preserves the branch record cleanly.)

8. Do ``git push`` to push this newly-updated master back to remote.

9. Do ``git push origin :heads/issue3`` to remove the remote branch.

10. Do ``git branch -d issue3`` to remove the local branch.
    (Note that the syntax is quite different to the removal of local
    branches.)


Building from git source
========================

We no longer have ``configure`` in the repository, so the procedure is
three step:

1. Do ``autoconf``

2. Do ``automake``

3. Do ``./configure && make``

(Note: I don't know whether the order of steps 1 and 2 matter, so I do
them twice -- DK.)
