StGit Release Checklist
=======================

0. Test

   - All functional tests should be passing (`make test`)
   - All lints should be passing (`make lint`)

1. Update CHANGELOG.md

   - Look at git log from last release to HEAD. Identify user-facing
     changes, but ignore internal-only changes such as refactorings.
   - Add changes to *Removed*, *Added*, *Changed*, and *Fixed* lists in
     CHANGELOG.md.
   - Change "[Unreleased]" to reflect new release version and date.
   - Commit updated CHANGELOG.md

2. Update version in Cargo.toml

   - Update the version field: `version = "X.Y.Z"`

3. Create new tag

   - `git tag --sign -m 'Release vX.Y.Z' vX.Y.Z`

4. Make source archive

   - `git archive --format=tar.gz --prefix=stgit-X.Y.Z/ -o stgit-X.Y.Z.tar.gz vX.Y.Z`
   - Note the trailing slash in the `--prefix` value.
   - This archive will be uploaded in step 7.

5. Update stacked-git.github.io

   - In stacked-git.github.io repo, `make sync` to sync updated
     changelog and man pages into website.
   - Review home page for anything that should be updated in conjunction
     with the StGit release.

6. Push changes upstream

   - Push new tag and master branch upstream
   - Push stacked-git.github.io changes

7. Create GitHub release

   - Use "Stacked Git X.Y.Z" for release title.
   - Write a sentence or two description of release.
   - Paste this version's changes from CHANGELOG.md.
   - Upload source archive file (`stgit-X.Y.Z.tar.gz`) from step 4.

8. Send notifications

   - Post a new discussion on GitHub repo
   - ...

9. Review and update these release instructions
