mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-22 06:42:41 +01:00
Bump Conduit client version
Summary: Several related changes: - Add a "--conduit-version" flag, so you can actually diff conduit version bumps. Otherwise, the server rejects you. - Make "arc upgrade" upgrade both libphutil and arcanist, not just arcanist. - Bump the version number to 5. See D2527. Test Plan: - Ran "arc upgrade". - Ran "arc diff". Got told there was a version issue. - Ran "arc diff --conduit-version=4" to create this diff. Reviewers: indiefan, nh, vrana, btrahan, jungejason, Makinde Reviewed By: vrana CC: aran Differential Revision: https://secure.phabricator.com/D2528
This commit is contained in:
parent
3e655e7d4c
commit
ccdf9ae957
4 changed files with 56 additions and 28 deletions
|
@ -42,6 +42,7 @@ $argv = $args->getUnconsumedArgumentVector();
|
|||
$config_trace_mode = $args->getArg('trace');
|
||||
|
||||
$force_conduit = null;
|
||||
$force_conduit_version = null;
|
||||
$args = $argv;
|
||||
$load = array();
|
||||
$matches = null;
|
||||
|
@ -54,6 +55,9 @@ foreach ($args as $key => $arg) {
|
|||
} else if (preg_match('/^--conduit-uri=(.*)$/', $arg, $matches)) {
|
||||
unset($args[$key]);
|
||||
$force_conduit = $matches[1];
|
||||
} else if (preg_match('/^--conduit-version=(.*)$/', $arg, $matches)) {
|
||||
unset($args[$key]);
|
||||
$force_conduit_version = $matches[1];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -193,6 +197,10 @@ try {
|
|||
$workflow->setWorkingDirectory($working_directory);
|
||||
$workflow->parseArguments($args);
|
||||
|
||||
if ($force_conduit_version) {
|
||||
$workflow->forceConduitVersion($force_conduit_version);
|
||||
}
|
||||
|
||||
$need_working_copy = $workflow->requiresWorkingCopy();
|
||||
$need_conduit = $workflow->requiresConduit();
|
||||
$need_auth = $workflow->requiresAuthentication();
|
||||
|
|
|
@ -56,6 +56,7 @@ abstract class ArcanistBaseWorkflow {
|
|||
private $conduitURI;
|
||||
private $conduitCredentials;
|
||||
private $conduitAuthenticated;
|
||||
private $forcedConduitVersion;
|
||||
|
||||
private $userPHID;
|
||||
private $userName;
|
||||
|
@ -178,6 +179,14 @@ abstract class ArcanistBaseWorkflow {
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function forceConduitVersion($version) {
|
||||
$this->forcedConduitVersion = $version;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getConduitVersion() {
|
||||
return nonempty($this->forcedConduitVersion, 5);
|
||||
}
|
||||
|
||||
/**
|
||||
* Open and authenticate a conduit connection to a Phabricator server using
|
||||
|
@ -234,7 +243,7 @@ abstract class ArcanistBaseWorkflow {
|
|||
'conduit.connect',
|
||||
array(
|
||||
'client' => 'arc',
|
||||
'clientVersion' => 4,
|
||||
'clientVersion' => $this->getConduitVersion(),
|
||||
'clientDescription' => php_uname('n').':'.$description,
|
||||
'user' => $user,
|
||||
'certificate' => $certificate,
|
||||
|
|
|
@ -199,6 +199,11 @@ EOTEXT
|
|||
Ignore configured Conduit URI and use an explicit one instead. Mostly
|
||||
useful for Arcanist development.
|
||||
|
||||
__--conduit-version=...__
|
||||
Ignore software version and claim to be running some other version
|
||||
instead. Mostly useful for Arcanist development. May cause bad things
|
||||
to happen.
|
||||
|
||||
|
||||
EOTEXT
|
||||
);
|
||||
|
|
|
@ -33,7 +33,7 @@ EOTEXT
|
|||
public function getCommandHelp() {
|
||||
return phutil_console_format(<<<EOTEXT
|
||||
Supports: cli
|
||||
Upgrade arc to the latest version.
|
||||
Upgrade arcanist and libphutil to the latest versions.
|
||||
EOTEXT
|
||||
);
|
||||
}
|
||||
|
@ -43,38 +43,44 @@ EOTEXT
|
|||
}
|
||||
|
||||
public function run() {
|
||||
echo "Upgrading arc...\n";
|
||||
$root = dirname(phutil_get_library_root('arcanist'));
|
||||
$roots = array();
|
||||
$roots['libphutil'] = dirname(phutil_get_library_root('phutil'));
|
||||
$roots['arcanist'] = dirname(phutil_get_library_root('arcanist'));
|
||||
|
||||
if (!Filesystem::pathExists($root.'/.git')) {
|
||||
throw new ArcanistUsageException(
|
||||
"arc must be in its git working copy to be automatically upgraded. ".
|
||||
"This copy of arc (in '{$root}') is not in a git working copy.");
|
||||
}
|
||||
foreach ($roots as $lib => $root) {
|
||||
echo "Upgrading {$lib}...\n";
|
||||
|
||||
$working_copy = ArcanistWorkingCopyIdentity::newFromPath($root);
|
||||
if (!Filesystem::pathExists($root.'/.git')) {
|
||||
throw new ArcanistUsageException(
|
||||
"{$lib} must be in its git working copy to be automatically ".
|
||||
"upgraded. This copy of {$lib} (in '{$root}') is not in a git ".
|
||||
"working copy.");
|
||||
}
|
||||
|
||||
$repository_api = ArcanistRepositoryAPI::newAPIFromWorkingCopyIdentity(
|
||||
$working_copy);
|
||||
$this->setRepositoryAPI($repository_api);
|
||||
$working_copy = ArcanistWorkingCopyIdentity::newFromPath($root);
|
||||
|
||||
// Require no local changes.
|
||||
$this->requireCleanWorkingCopy();
|
||||
$repository_api = ArcanistRepositoryAPI::newAPIFromWorkingCopyIdentity(
|
||||
$working_copy);
|
||||
$this->setRepositoryAPI($repository_api);
|
||||
|
||||
// Require arc be on master.
|
||||
$branch_name = $repository_api->getBranchName();
|
||||
if ($branch_name != 'master') {
|
||||
throw new ArcanistUsageException(
|
||||
"arc must be on branch 'master' to be automatically upgraded. ".
|
||||
"This copy of arc (in '{$root}') is on branch '{$branch_name}'.");
|
||||
}
|
||||
// Require no local changes.
|
||||
$this->requireCleanWorkingCopy();
|
||||
|
||||
chdir($root);
|
||||
try {
|
||||
phutil_passthru('git pull --rebase');
|
||||
} catch (Exception $ex) {
|
||||
phutil_passthru('git rebase --abort');
|
||||
throw $ex;
|
||||
// Require the library be on master.
|
||||
$branch_name = $repository_api->getBranchName();
|
||||
if ($branch_name != 'master') {
|
||||
throw new ArcanistUsageException(
|
||||
"{$lib} must be on branch 'master' to be automatically upgraded. ".
|
||||
"This copy of {$lib} (in '{$root}') is on branch '{$branch_name}'.");
|
||||
}
|
||||
|
||||
chdir($root);
|
||||
try {
|
||||
phutil_passthru('git pull --rebase');
|
||||
} catch (Exception $ex) {
|
||||
phutil_passthru('git rebase --abort');
|
||||
throw $ex;
|
||||
}
|
||||
}
|
||||
|
||||
echo phutil_console_wrap(
|
||||
|
|
Loading…
Reference in a new issue