On Tue, 06 Apr 2010, Sebastian Spaeth wrote: > On 2010-04-06, Michal Sojka wrote: > > I often have several versions of notmuch compiled and it would be very > > helpful to be able to distinguish between them. Git has a very nice > > feature to make intermediate numbering automatic and unambiguous so > > let's use it here. > > But, there are people without git installed that download the release > tarball. So if this patch makes it, we need to replace this with a > static version number when baking a release tar.
Right, here is an updated patch. It's more complicated than the previous one, but it solves the issue. -Michal --8<---------------cut here---------------start------------->8--- I often have several versions of notmuch compiled and it would be very helpful to be able to distinguish between them. Git has a very nice feature to make intermediate numbering automatic and unambiguous so let's use it here. For tagged versions, the version is the name of the tag, for intermediate versions, the unique ID of the commit is appended to the tag name. When notmuch is compiled from a release tarball, there is no git repository and therefore the tarball has to contain a special file 'version', which contains the correct version number. --- .gitignore | 1 + Makefile.local | 24 +++++++++++++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 95c50ec..b72ce72 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .first-build-message Makefile.config +Makefile.version TAGS tags *cscope* diff --git a/Makefile.local b/Makefile.local index 74f0f86..09fffa6 100644 --- a/Makefile.local +++ b/Makefile.local @@ -7,11 +7,14 @@ # digit when we reach particularly major milestones of usability. # # Between releases, (such as when compiling notmuch from the git -# repository), we add a third digit, (0.1.1, 0.1.2, etc.), and -# increment it occasionally, (such as after a big batch of commits are -# merged. +# repository), we let git to append identification of the actual +# commit. PACKAGE=notmuch -VERSION=0.1.1 +include Makefile.version + +.PHONY: Makefile.version +Makefile.version: + echo VERSION=$(if $(wildcard version),`cat version`,`git describe --dirty`) > $@ RELEASE_HOST=notmuchmail.org RELEASE_DIR=/srv/notmuchmail.org/www/releases @@ -61,8 +64,15 @@ ifeq ($(shell cat .first-build-message),) endif endif -$(TAR_FILE): - git archive --format=tar --prefix=$(PACKAGE)-$(VERSION)/ HEAD | gzip > $(TAR_FILE) +.PHONY: version # Always regenerate version +version: + git describe > $@ + +$(TAR_FILE): version + git archive --format=tar --prefix=$(PACKAGE)-$(VERSION)/ HEAD > $(TAR_FILE).tmp + tar --append -f $(TAR_FILE).tmp --transform s_^_$(PACKAGE)-$(VERSION)/_ version + rm version + gzip < $(TAR_FILE).tmp > $(TAR_FILE) @echo "Source is ready for release in $(TAR_FILE)" $(SHA1_FILE): $(TAR_FILE) @@ -263,4 +273,4 @@ install-zsh: $(call quiet_install_data, contrib/notmuch-completion.zsh $(DESTDIR)$(zsh_completion_dir)/notmuch) SRCS := $(SRCS) $(notmuch_client_srcs) -CLEAN := $(CLEAN) notmuch notmuch-shared $(notmuch_client_modules) notmuch.elc notmuch.1.gz +CLEAN := $(CLEAN) notmuch notmuch-shared $(notmuch_client_modules) notmuch.elc notmuch.1.gz version -- 1.7.0.2