summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2010-04-15 20:03:30 -0700
committerCarl Worth <cworth@cworth.org>2010-04-15 20:14:54 -0700
commit00263dd1a9e08ab1fa947fa58d1c2ad62e8b9653 (patch)
tree5d84b38c2d0006985cc4c0026969c9646b50e2ba
parent8700de6fb77fb0ebd7956be7b0a90443ef3e3989 (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.local17
-rw-r--r--RELEASING10
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:
diff --git a/RELEASING b/RELEASING
index 8e628d7..f47ba39 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