Author: julianfoad
Date: Fri Oct 5 12:00:52 2018
New Revision: 1842897
URL: http://svn.apache.org/viewvc?rev=1842897&view=rev
Log:
* tools/dist/create-minor-release-branch.py
Stop hard-coding parameters. Branch from specified revision.
Modified:
subversion/trunk/tools/dist/create-minor-release-branch.py
Modified: subversion/trunk/tools/dist/create-minor-release-branch.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/tools/dist/create-minor-release-branch.py?rev=1842897&r1=1842896&r2=1842897&view=diff
==============================================================================
--- subversion/trunk/tools/dist/create-minor-release-branch.py (original)
+++ subversion/trunk/tools/dist/create-minor-release-branch.py Fri Oct 5
12:00:52 2018
@@ -39,6 +39,9 @@ repos = 'https://svn.apache.org/repos/as
secure_repos = 'https://svn.apache.org/repos/asf/subversion'
buildbot_repos =
'https://svn.apache.org/repos/infra/infrastructure/buildbot/aegis/buildmaster'
+# Parameters
+dry_run = False
+
# Local working copies
base_dir = None # set by main()
@@ -72,15 +75,21 @@ def run(cmd, dry_run=False):
if not dry_run:
stdout = subprocess.check_output(cmd)
print(stdout)
+ else:
+ print(' ## dry-run; not executed')
def run_svn(cmd, dry_run=False):
run(['svn'] + cmd, dry_run)
def svn_commit(cmd):
- run_svn(['commit'] + cmd, dry_run=True)
+ run_svn(['commit'] + cmd, dry_run=dry_run)
+
+def svn_copy_branch(src, dst, message):
+ args = ['copy', src, dst, '-m', message]
+ run_svn(args, dry_run=dry_run)
-def svn_checkout(*args):
- args = ['checkout'] + list(args) + ['--revision={2017-12-01}']
+def svn_checkout(url, wc, *args):
+ args = ['checkout', url, wc] + list(args)
run_svn(args)
#----------------------------------------------------------------------
@@ -100,18 +109,19 @@ def prepend_file(path, text):
open(path, 'w').write(text + original)
#----------------------------------------------------------------------
-def make_release_branch(ver):
- run_svn(['copy', get_trunk_url(), get_branch_url(ver),
- '-m', 'Create the ' + ver.branch + '.x release branch.'],
- dry_run=True)
+def make_release_branch(ver, revnum):
+ svn_copy_branch(get_trunk_url() + '@' + (str(revnum) if revnum else ''),
+ get_branch_url(ver),
+ 'Create the ' + ver.branch + '.x release branch.')
#----------------------------------------------------------------------
-def update_minor_ver_in_trunk(ver):
+def update_minor_ver_in_trunk(ver, revnum):
"""Change the minor version in trunk to the next (future) minor version.
"""
trunk_wc = get_trunk_wc_path()
trunk_url = get_trunk_url()
- svn_checkout(trunk_url, trunk_wc)
+ svn_checkout(trunk_url + '@' + (str(revnum) if revnum else ''),
+ trunk_wc)
prev_ver = Version('1.%d.0' % (ver.minor - 1,))
next_ver = Version('1.%d.0' % (ver.minor + 1,))
@@ -242,14 +252,12 @@ Subversion: start monitoring the %s bran
svn_commit(commit_paths + ['-m', log_msg])
#----------------------------------------------------------------------
-def steps(args):
- ver = Version('1.10.0')
-
- make_release_branch(ver)
- update_minor_ver_in_trunk(ver)
- create_status_file_on_branch(ver)
- update_backport_bot(ver)
- update_buildbot_config(ver)
+def create_release_branch(args):
+ make_release_branch(args.version, args.revnum)
+ update_minor_ver_in_trunk(args.version, args.revnum)
+ create_status_file_on_branch(args.version)
+ update_backport_bot(args.version)
+ update_buildbot_config(args.version)
#----------------------------------------------------------------------
@@ -261,24 +269,37 @@ def main():
# Setup our main parser
parser = argparse.ArgumentParser(
description='Create an Apache Subversion release
branch.')
- parser.add_argument('--verbose', action='store_true', default=False,
+ subparsers = parser.add_subparsers(title='subcommands')
+
+ # Setup the parser for the create-release-branch subcommand
+ subparser = subparsers.add_parser('create-release-branch',
+ help='''Create a minor release branch: branch from trunk,
+ update version numbers on trunk, create status
+ file on branch, update backport bot,
+ update buildbot config.''')
+ subparser.set_defaults(func=create_release_branch)
+ subparser.add_argument('version', type=Version,
+ help='''A version number to indicate the branch, such as
+ '1.7.0' (the '.0' is required).''')
+ subparser.add_argument('revnum', type=lambda arg: int(arg.lstrip('r')),
+ nargs='?', default=None,
+ help='''The trunk revision number to base the branch on.
+ Default is HEAD.''')
+ subparser.add_argument('--dry-run', action='store_true', default=False,
+ help='Avoid committing any changes to repositories.')
+ subparser.add_argument('--verbose', action='store_true', default=False,
help='Increase output verbosity')
- parser.add_argument('--base-dir', default=os.getcwd(),
+ subparser.add_argument('--base-dir', default=os.getcwd(),
help='''The directory in which to create needed files and
folders. The default is the current working
directory.''')
- subparsers = parser.add_subparsers(title='subcommands')
-
- # Setup the parser for the build-env subcommand
- subparser = subparsers.add_parser('steps',
- help='''Run the release-branch-creation steps.''')
- subparser.set_defaults(func=steps)
# Parse the arguments
args = parser.parse_args()
- global base_dir
+ global base_dir, dry_run
base_dir = args.base_dir
+ dry_run = args.dry_run
# Set up logging
logger = logging.getLogger()