diff --git a/Makefile.local b/Makefile.local index 98d69c4d..e1120727 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: diff --git a/RELEASING b/RELEASING index 8e628d7f..f47ba39c 100644 --- a/RELEASING +++ b/RELEASING @@ -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