diff --git a/scripts/arcanist.php b/scripts/arcanist.php --- a/scripts/arcanist.php +++ b/scripts/arcanist.php @@ -202,17 +202,21 @@ $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 --- a/src/workflow/ArcanistShellCompleteWorkflow.php +++ b/src/workflow/ArcanistShellCompleteWorkflow.php @@ -82,8 +82,11 @@ 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;