1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-22 06:42:42 +01:00

Add dry-run, max version options to upgrade_schema.php script

Summary:
1) Dry run option allows you to run the script to see what patches would get
applied (without actually applying them).
2) Max version allows you to do a partial upgrade.

Task ID: #

Blame Rev:

Test Plan:
ran a dry run twice (to make sure it didn't do anything) and no max version
ran with a dry run and max version to check max version logic works correctly
ran with just a max version, and only patches up to that point got applied

Revert Plan:

Tags:

Reviewers: epriestley, btrahan, jungejason

CC: aran, epriestley

Differential Revision: https://secure.phabricator.com/D1758
This commit is contained in:
Nick Harper 2012-03-02 11:09:31 -08:00
parent 974efd6d65
commit b5897ec9c0

View file

@ -2,7 +2,7 @@
<?php <?php
/* /*
* Copyright 2011 Facebook, Inc. * Copyright 2012 Facebook, Inc.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -26,13 +26,14 @@ phutil_require_module('phabricator', 'infrastructure/setup/sql');
define('SCHEMA_VERSION_TABLE_NAME', 'schema_version'); define('SCHEMA_VERSION_TABLE_NAME', 'schema_version');
// TODO: getopt() is super terrible, move to something less terrible. // TODO: getopt() is super terrible, move to something less terrible.
$options = getopt('fhv:u:p:') + array( $options = getopt('fhdv:u:p:m:') + array(
'v' => null, // Upgrade from specific version 'v' => null, // Upgrade from specific version
'u' => null, // Override MySQL User 'u' => null, // Override MySQL User
'p' => null, // Override MySQL Pass 'p' => null, // Override MySQL Pass
'm' => null, // Specify max version to upgrade to
); );
foreach (array('h', 'f') as $key) { foreach (array('h', 'f', 'd') as $key) {
// By default, these keys are set to 'false' to indicate that the flag was // By default, these keys are set to 'false' to indicate that the flag was
// passed. // passed.
if (array_key_exists($key, $options)) { if (array_key_exists($key, $options)) {
@ -40,11 +41,12 @@ foreach (array('h', 'f') as $key) {
} }
} }
if (!empty($options['h']) || ($options['v'] && !is_numeric($options['v']))) { if (!empty($options['h']) || ($options['v'] && !is_numeric($options['v']))
|| ($options['m'] && !is_numeric($options['m']))) {
usage(); usage();
} }
if (empty($options['f'])) { if (empty($options['f']) && empty($options['d'])) {
echo phutil_console_wrap( echo phutil_console_wrap(
"Before running this script, you should take down the Phabricator web ". "Before running this script, you should take down the Phabricator web ".
"interface and stop any running Phabricator daemons."); "interface and stop any running Phabricator daemons.");
@ -57,6 +59,7 @@ if (empty($options['f'])) {
// Use always the version from the commandline if it is defined // Use always the version from the commandline if it is defined
$next_version = isset($options['v']) ? (int)$options['v'] : null; $next_version = isset($options['v']) ? (int)$options['v'] : null;
$max_version = isset($options['m']) ? (int)$options['m'] : null;
$conf = DatabaseConfigurationProvider::getConfiguration(); $conf = DatabaseConfigurationProvider::getConfiguration();
@ -127,9 +130,18 @@ END;
continue; continue;
} }
if ($max_version && $patch['version'] > $max_version) {
continue;
}
$short_name = basename($patch['path']); $short_name = basename($patch['path']);
print "Applying patch {$short_name}...\n"; print "Applying patch {$short_name}...\n";
if (!empty($options['d'])) {
$patch_applied = true;
continue;
}
if ($conn_port) { if ($conn_port) {
$port = '--port='.(int)$conn_port; $port = '--port='.(int)$conn_port;
} else { } else {
@ -193,7 +205,11 @@ function usage() {
"default user.\n". "default user.\n".
"Run 'upgrade_schema.php -v 12' to apply all patches starting from ". "Run 'upgrade_schema.php -v 12' to apply all patches starting from ".
"version 12. It is very unlikely you need to do this.\n". "version 12. It is very unlikely you need to do this.\n".
"Run 'upgrade_schema.php -m 110' to apply all patches up to and ".
"including version 110 (but nothing past).\n".
"Use the -f flag to upgrade noninteractively, without prompting.\n". "Use the -f flag to upgrade noninteractively, without prompting.\n".
"Use the -d flag to do a dry run - patches that would be applied ".
"will be listed, but not applied.\n".
"Use the -h flag to show this help.\n"; "Use the -h flag to show this help.\n";
exit(1); exit(1);
} }