From a08383aa1b7879b479c34853fa9a6a10d2c3fd1c Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 3 Feb 2015 12:32:46 -0800 Subject: [PATCH] Make "no working copy" a more explicit "arc" VCS Summary: Some commands (like `get-config`) do not require a working copy at all. Recent changes prevented these commands from running outside a VCS working copy. Let `null` mean "no working copy". See also . Test Plan: - Ran `arc get-config` from outside a working copy. - Ran `arc list` from outside a working copy, got an error. - Ran `arc commit` in a Git working copy, got an error. Reviewers: joshuaspence Reviewed By: joshuaspence Subscribers: epriestley Differential Revision: https://secure.phabricator.com/D11643 --- scripts/arcanist.php | 20 +++++++++++-------- .../ArcanistShellCompleteWorkflow.php | 7 +++++-- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/scripts/arcanist.php b/scripts/arcanist.php index 737a01a8..c0bd7661 100755 --- a/scripts/arcanist.php +++ b/scripts/arcanist.php @@ -202,17 +202,21 @@ try { $workflow->setConduitTimeout($conduit_timeout); } + $need_working_copy = $workflow->requiresWorkingCopy(); + $supported_vcs_types = $workflow->getSupportedRevisionControlSystems(); - if (!in_array($working_copy->getVCSType(), $supported_vcs_types)) { - throw new ArcanistUsageException( - pht( - '`%s %s` is only supported under %s.', - 'arc', - $workflow->getWorkflowName(), - implode(', ', $supported_vcs_types))); + $vcs_type = $working_copy->getVCSType(); + if ($vcs_type || $need_working_copy) { + if (!in_array($vcs_type, $supported_vcs_types)) { + throw new ArcanistUsageException( + pht( + '`%s %s` is only supported under %s.', + 'arc', + $workflow->getWorkflowName(), + implode(', ', $supported_vcs_types))); + } } - $need_working_copy = $workflow->requiresWorkingCopy(); $need_conduit = $workflow->requiresConduit(); $need_auth = $workflow->requiresAuthentication(); $need_repository_api = $workflow->requiresRepositoryAPI(); diff --git a/src/workflow/ArcanistShellCompleteWorkflow.php b/src/workflow/ArcanistShellCompleteWorkflow.php index e5a2aacf..ca519903 100644 --- a/src/workflow/ArcanistShellCompleteWorkflow.php +++ b/src/workflow/ArcanistShellCompleteWorkflow.php @@ -82,8 +82,11 @@ EOTEXT continue; } - if (!in_array($vcs, $workflow->getSupportedRevisionControlSystems())) { - continue; + if ($vcs || $workflow->requiresWorkingCopy()) { + $supported_vcs = $workflow->getSupportedRevisionControlSystems(); + if (!in_array($vcs, $supported_vcs)) { + continue; + } } $complete[] = $name;