diff options
author | Carl Worth <cworth@cworth.org> | 2010-04-15 20:03:30 -0700 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2010-04-15 20:14:54 -0700 |
commit | 00263dd1a9e08ab1fa947fa58d1c2ad62e8b9653 (patch) | |
tree | 5d84b38c2d0006985cc4c0026969c9646b50e2ba | |
parent | 8700de6fb77fb0ebd7956be7b0a90443ef3e3989 (diff) |
make release: Enforce a clean source tree before release.
Where by clean, we check that no files are known to git to be
modified.
-rw-r--r-- | Makefile.local | 17 | ||||
-rw-r--r-- | RELEASING | 10 |
2 files changed, 21 insertions, 6 deletions
diff --git a/Makefile.local b/Makefile.local index 98d69c4..e112072 100644 --- a/Makefile.local +++ b/Makefile.local @@ -69,7 +69,7 @@ dist: $(TAR_FILE) # We invoke make recursively only to force ordering of our phony # targets in the case of parallel invocation of make (-j). .PHONY: release -release: verify-version +release: verify-no-dirty-code $(MAKE) test $(MAKE) $(GPG_FILE) $(MAKE) verify-newer @@ -116,6 +116,21 @@ release-message: @echo "" @echo "For more about notmuch, see http://notmuchmail.org" +.PHONY: verify-no-dirty-code +verify-no-dirty-code: verify-version + @printf "Checking that source tree is clean..." +ifneq ($(shell git ls-files -m),) + @echo "No" + @echo "The following files have been modified since the most recent git commit:" + @echo "" + @git ls-files -m + @echo "" + @echo "The release will be made from the committed state, but perhaps you meant" + @echo "to commit this code first? Please clean this up to make it more clear." + @false +else + @echo "Good" +endif .PHONY: verify-version verify-version: @@ -37,17 +37,17 @@ repository. From here, there are just a few steps to release: For the X.Y version, we'll generally just increment Y. But for major milestones of usability we're increment X as well. + * Ensure that the caller passed VERSION=X.Y + * Verify that the source tree is clean * Compile the current notmuch code (aborting release if it fails) * Run the notmuch test suite (aborting release if it fails) - * Check that the notmuch version consists of only two components - * Check that no release exists with the current version - * Verify that "make dist" completes successfully * Generate the final tar file - * Generate an sha1sum file + * Generate a .sha1 sum file for the tar file * Sign the sha1sum using your GPG setup (asks for your GPG password) + * Check that no release exists with the current version * scp the three files to appear on http://notmuchmail.org/releases - * Place local copies of the three files in the releases directory * Create a LATEST-notmuch-version file (after deleting any old one) + * Place local copies of the three files in the releases directory * Tag the entire source tree with a tag of the form X.Y.Z, and sign the tag with your GPG key (asks for your GPG password, and you may need to set GIT_COMMITTER_NAME and GIT_COMMITTER_EMAIL to match |