From 6750af616758cb7ae153ff986916965ecacb786b Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Tue, 17 Sep 2019 14:22:47 +0100 Subject: [PATCH] build: make VERSION file be master of the last release - fixes #3570 Prior to this beta releases would appear to be older than the point release, eg v1.49.0-096-gc41812fc which was released after v1.49.3 and contains all the patches from v1.49.3. --- Makefile | 44 ++++++++++++++++++++++++++++---------------- RELEASE.md | 7 +++---- VERSION | 1 + 3 files changed, 32 insertions(+), 20 deletions(-) create mode 100644 VERSION diff --git a/Makefile b/Makefile index cf9e7b378..587eb31ae 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,29 @@ SHELL = bash +# Branch we are working on BRANCH := $(or $(APPVEYOR_REPO_BRANCH),$(TRAVIS_BRANCH),$(BUILD_SOURCEBRANCHNAME),$(lastword $(subst /, ,$(GITHUB_REF))),$(shell git rev-parse --abbrev-ref HEAD)) +# Tag of the current commit, if any. If this is not "" then we are building a release +RELEASE_TAG := $(shell git tag -l --points-at HEAD) +# Version of last release (may not be on this branch) +VERSION := $(shell cat VERSION) +# Last tag on this branch LAST_TAG := $(shell git describe --tags --abbrev=0) -ifeq ($(BRANCH),$(LAST_TAG)) +# If we are working on a release, override branch to master +ifdef RELEASE_TAG BRANCH := master endif TAG_BRANCH := -$(BRANCH) BRANCH_PATH := branch/ +# If building HEAD or master then unset TAG_BRANCH and BRANCH_PATH ifeq ($(subst HEAD,,$(subst master,,$(BRANCH))),) TAG_BRANCH := BRANCH_PATH := endif -TAG := $(shell echo $$(git describe --abbrev=8 --tags | sed 's/-\([0-9]\)-/-00\1-/; s/-\([0-9][0-9]\)-/-0\1-/'))$(TAG_BRANCH) -NEW_TAG := $(shell echo $(LAST_TAG) | perl -lpe 's/v//; $$_ += 0.01; $$_ = sprintf("v%.2f.0", $$_)') -ifneq ($(TAG),$(LAST_TAG)) +# Make version suffix -DDD-gCCCCCCCC (D=commits since last relase, C=Commit) or blank +VERSION_SUFFIX := $(shell git describe --abbrev=8 --tags | perl -lpe 's/^v\d+\.\d+\.\d+//; s/^-(\d+)/"-".sprintf("%03d",$$1)/e;') +# TAG is current version + number of commits since last release + branch +TAG := $(VERSION)$(VERSION_SUFFIX)$(TAG_BRANCH) +NEXT_VERSION := $(shell echo $(VERSION) | perl -lpe 's/v//; $$_ += 0.01; $$_ = sprintf("v%.2f.0", $$_)') +ifndef RELEASE_TAG TAG := $(TAG)-beta endif GO_VERSION := $(shell go version) @@ -44,8 +55,8 @@ vars: @echo SHELL="'$(SHELL)'" @echo BRANCH="'$(BRANCH)'" @echo TAG="'$(TAG)'" - @echo LAST_TAG="'$(LAST_TAG)'" - @echo NEW_TAG="'$(NEW_TAG)'" + @echo VERSION="'$(VERSION)'" + @echo NEXT_VERSION="'$(NEXT_VERSION)'" @echo GO_VERSION="'$(GO_VERSION)'" @echo BETA_URL="'$(BETA_URL)'" @@ -192,24 +203,25 @@ serve: website cd docs && hugo server -v -w tag: doc - @echo "Old tag is $(LAST_TAG)" - @echo "New tag is $(NEW_TAG)" - echo -e "package fs\n\n// Version of rclone\nvar Version = \"$(NEW_TAG)\"\n" | gofmt > fs/version.go - echo -n "$(NEW_TAG)" > docs/layouts/partials/version.html - git tag -s -m "Version $(NEW_TAG)" $(NEW_TAG) - bin/make_changelog.py $(LAST_TAG) $(NEW_TAG) > docs/content/changelog.md.new + @echo "Old tag is $(VERSION)" + @echo "New tag is $(NEXT_VERSION)" + echo -e "package fs\n\n// Version of rclone\nvar Version = \"$(NEXT_VERSION)\"\n" | gofmt > fs/version.go + echo -n "$(NEXT_VERSION)" > docs/layouts/partials/version.html + echo "$(NEXT_VERSION)" > VERSION + git tag -s -m "Version $(NEXT_VERSION)" $(NEXT_VERSION) + bin/make_changelog.py $(LAST_TAG) $(NEXT_VERSION) > docs/content/changelog.md.new mv docs/content/changelog.md.new docs/content/changelog.md @echo "Edit the new changelog in docs/content/changelog.md" @echo "Then commit all the changes" - @echo git commit -m \"Version $(NEW_TAG)\" -a -v + @echo git commit -m \"Version $(NEXT_VERSION)\" -a -v @echo "And finally run make retag before make cross etc" retag: - git tag -f -s -m "Version $(LAST_TAG)" $(LAST_TAG) + git tag -f -s -m "Version $(VERSION)" $(VERSION) startdev: - echo -e "package fs\n\n// Version of rclone\nvar Version = \"$(LAST_TAG)-DEV\"\n" | gofmt > fs/version.go - git commit -m "Start $(LAST_TAG)-DEV development" fs/version.go + echo -e "package fs\n\n// Version of rclone\nvar Version = \"$(VERSION)-DEV\"\n" | gofmt > fs/version.go + git commit -m "Start $(VERSION)-DEV development" fs/version.go winzip: zip -9 rclone-$(TAG).zip rclone.exe diff --git a/RELEASE.md b/RELEASE.md index 0d8414721..b87dd9265 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -56,8 +56,7 @@ Can be fixed with ## Making a point release -If rclone needs a point release due to some horrendous bug then a -point release is necessary. +If rclone needs a point release due to some horrendous bug: First make the release branch. If this is a second point release then this will be done already. @@ -90,8 +89,8 @@ Now * NB this overwrites the current beta so we need to do this * git co master * make LAST_TAG=${NEW_TAG} startdev - * # cherry pick the changes to the changelog - * git checkout ${BASE_TAG}-fixes docs/content/changelog.md + * # cherry pick the changes to the changelog and VERSION + * git checkout ${BASE_TAG}-fixes VERSION docs/content/changelog.md * git commit --amend * git push * Announce! diff --git a/VERSION b/VERSION new file mode 100644 index 000000000..d16171d45 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +v1.49.3