diff --git a/zcutil/make-release.py b/zcutil/make-release.py index 514d5883f..470fd09ec 100755 --- a/zcutil/make-release.py +++ b/zcutil/make-release.py @@ -27,6 +27,7 @@ def main(args=sys.argv[1:]): opts.RELEASE_VERSION, opts.RELEASE_PREV, opts.RELEASE_HEIGHT, + opts.HOTFIX, ) except SystemExit as e: logging.error(str(e)) @@ -44,6 +45,12 @@ def parse_args(args): type=str, help='Path to repository root.', ) + p.add_argument( + '--hotfix', + action='store_true', + dest='HOTFIX', + help='Use if this is a hotfix release from a non-master branch.', + ) p.add_argument( 'RELEASE_VERSION', type=Version.parse_arg, @@ -63,9 +70,9 @@ def parse_args(args): # Top-level flow: -def main_logged(release, releaseprev, releaseheight): +def main_logged(release, releaseprev, releaseheight, hotfix): verify_releaseprev_tag(releaseprev) - initialize_git(release) + initialize_git(release, hotfix) patch_version_in_files(release, releaseprev) patch_release_height(releaseheight) commit('Versioning changes for {}.'.format(release.novtext)) @@ -124,16 +131,20 @@ def verify_releaseprev_tag(releaseprev): @phase('Initializing git.') -def initialize_git(release): +def initialize_git(release, hotfix): junk = sh_out('git', 'status', '--porcelain') if junk.strip(): raise SystemExit('There are uncommitted changes:\n' + junk) branch = sh_out('git', 'rev-parse', '--abbrev-ref', 'HEAD').strip() - if branch != 'master': + if hotfix: + expected = 'hotfix-' + release.vtext + else: + expected = 'master' + if branch != expected: raise SystemExit( - "Expected branch 'master', found branch {!r}".format( - branch, + "Expected branch {!r}, found branch {!r}".format( + expected, branch, ), )