From 24bfc7c6c6ba05153536b5345e7b0f35e19deb6c Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Thu, 31 Aug 2017 02:05:07 +0100 Subject: [PATCH] Enforce sequential hotfix versioning --- doc/hotfix-process.md | 6 ++++++ zcutil/make-release.py | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/doc/hotfix-process.md b/doc/hotfix-process.md index 9328b1f9d..15c88bbba 100644 --- a/doc/hotfix-process.md +++ b/doc/hotfix-process.md @@ -1,6 +1,12 @@ Hotfix Release Process ====================== +Hotfix releases are versioned by incrementing the build number of the latest +release. For example: + + First hotfix: v1.0.11 -> v1.0.11-1 + Second hotfix: v1.0.11-1 -> v1.0.11-2 + In the commands below, and are prefixed with a v, ie. v1.0.11 (not 1.0.11). diff --git a/zcutil/make-release.py b/zcutil/make-release.py index 470fd09ec..991fde051 100755 --- a/zcutil/make-release.py +++ b/zcutil/make-release.py @@ -72,6 +72,7 @@ def parse_args(args): # Top-level flow: def main_logged(release, releaseprev, releaseheight, hotfix): verify_releaseprev_tag(releaseprev) + verify_version(release, releaseprev, hotfix) initialize_git(release, hotfix) patch_version_in_files(release, releaseprev) patch_release_height(releaseheight) @@ -130,6 +131,26 @@ def verify_releaseprev_tag(releaseprev): ) +@phase('Checking version.') +def verify_version(release, releaseprev, hotfix): + if not hotfix: + return + + expected = Version( + releaseprev.major, + releaseprev.minor, + releaseprev.patch, + releaseprev.betarc, + releaseprev.hotfix + 1 if releaseprev.hotfix else 1, + ) + if release != expected: + raise SystemExit( + "Expected {!r}, given {!r}".format( + expected, release, + ), + ) + + @phase('Initializing git.') def initialize_git(release, hotfix): junk = sh_out('git', 'status', '--porcelain')