forked from haskell/cabal
-
Notifications
You must be signed in to change notification settings - Fork 0
Making a release
Johan Tibell edited this page Mar 16, 2015
·
20 revisions
# Check out the major branch you're making a release based on (you might need -b if it doesn't exist).
git checkout X.YY
# Make sure you have all the changes.
git pull
# Repeat for every commit in master that should be part of this release.
git cherry-pick -x <commit on master># The version you're releasing.
export VERSION=X.YY.M.P
# Check what's new since the previous release of Cabal.
git log Cabal-v<previous release>.. -- Cabal/
# Update the changelog by summarizing the above commit log (feel free to editorialize).
cd Cabal
$EDITOR changelog
# Bump the version number (depending on if this is a major, minor, or patch release).
$EDITOR Cabal.cabal
$EDITOR Makefile
# Commit the changes.
git commit -am "Bump Cabal version number to v$(VERSION)"
# Make sure that the library builds and that the tests pass.
cabal clean && cabal test
# Push to the build bot (https://travis-ci.org/haskell/cabal) and wait for the results.
# This exercises additional GHC versions.
git push
# Update the Makefile for the release (KIND=cabal-latest, SSH_USER=<you>).
# These changes shouldn't be committed and can be reverted once the release is done.
$EDITOR Makefile
# Make the release (includes uploading the tarball to haskell.org/cabal).
make release
# Upload the tarball to Hackage as well.
cabal upload dist/Cabal-$(VERSION).tar.gz
# Tag the release.
git tag Cabal-v$(VERSION)
git push && git push --tags