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()


Reply via email to