Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

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
  • Loading branch information...
commit ccdf9ae957f995154374a0dc344fb260b112ce2b 1 parent 3e655e7
@epriestley epriestley authored
View
8 scripts/arcanist.php
@@ -42,6 +42,7 @@
$config_trace_mode = $args->getArg('trace');
$force_conduit = null;
+$force_conduit_version = null;
$args = $argv;
$load = array();
$matches = null;
@@ -54,6 +55,9 @@
} 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 @@
$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();
View
11 src/workflow/base/ArcanistBaseWorkflow.php
@@ -56,6 +56,7 @@
private $conduitURI;
private $conduitCredentials;
private $conduitAuthenticated;
+ private $forcedConduitVersion;
private $userPHID;
private $userName;
@@ -178,6 +179,14 @@ public function __construct() {
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 @@ public function __construct() {
'conduit.connect',
array(
'client' => 'arc',
- 'clientVersion' => 4,
+ 'clientVersion' => $this->getConduitVersion(),
'clientDescription' => php_uname('n').':'.$description,
'user' => $user,
'certificate' => $certificate,
View
5 src/workflow/help/ArcanistHelpWorkflow.php
@@ -199,6 +199,11 @@ public function run() {
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
);
View
60 src/workflow/upgrade/ArcanistUpgradeWorkflow.php
@@ -33,7 +33,7 @@ public function getCommandSynopses() {
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 @@ public function getArguments() {
}
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();
+
+ // 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;
+ chdir($root);
+ try {
+ phutil_passthru('git pull --rebase');
+ } catch (Exception $ex) {
+ phutil_passthru('git rebase --abort');
+ throw $ex;
+ }
}
echo phutil_console_wrap(
Please sign in to comment.
Something went wrong with that request. Please try again.