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

fix tab complete for out-of-workdir

Summary:
see https://github.com/facebook/phabricator/issues/546 - arc complete blows up when not
in a workdir.

There's no "is ArcanistWorkingCopyIdentity object valid" method, but getVCSType() looks like the
closest match.

git grep for `getProjectRoot` didn't reveal any more problmatic call sites.

Test Plan: `arc [tab] [tab]`

Reviewers: #blessed_reviewers, epriestley

Reviewed By: #blessed_reviewers, epriestley

Subscribers: epriestley, Korvin

Differential Revision: https://secure.phabricator.com/D8578
This commit is contained in:
Aviv Eyal 2014-03-25 17:32:58 -07:00 committed by epriestley
parent 46fe94db9f
commit d0bab7f34a
2 changed files with 5 additions and 4 deletions

View file

@ -193,7 +193,7 @@ try {
$need_repository_api; $need_repository_api;
if ($need_working_copy || $want_working_copy) { if ($need_working_copy || $want_working_copy) {
if ($need_working_copy && !$working_copy->getProjectRoot()) { if ($need_working_copy && !$working_copy->getVCSType()) {
throw new ArcanistUsageException( throw new ArcanistUsageException(
"This command must be run in a Git, Mercurial or Subversion working ". "This command must be run in a Git, Mercurial or Subversion working ".
"copy."); "copy.");
@ -286,7 +286,8 @@ try {
$workflow->authenticateConduit(); $workflow->authenticateConduit();
} }
if ($need_repository_api || ($want_repository_api && $working_copy)) { if ($need_repository_api ||
($want_repository_api && $working_copy->getVCSType())) {
$repository_api = ArcanistRepositoryAPI::newAPIFromConfigurationManager( $repository_api = ArcanistRepositoryAPI::newAPIFromConfigurationManager(
$configuration_manager); $configuration_manager);
$workflow->setRepositoryAPI($repository_api); $workflow->setRepositoryAPI($repository_api);

View file

@ -58,9 +58,9 @@ EOTEXT
// We have to build our own because if we requiresWorkingCopy() we'll throw // We have to build our own because if we requiresWorkingCopy() we'll throw
// if we aren't in a .arcconfig directory. We probably still can't do much, // if we aren't in a .arcconfig directory. We probably still can't do much,
// but commands can raise more detailed errors. // but commands can raise more detailed errors.
$working_copy = ArcanistWorkingCopyIdentity::newFromPath(getcwd());
$configuration_manager = $this->getConfigurationManager(); $configuration_manager = $this->getConfigurationManager();
if ($working_copy->getProjectRoot()) { $working_copy = ArcanistWorkingCopyIdentity::newFromPath(getcwd());
if ($working_copy->getVCSType()) {
$configuration_manager->setWorkingCopyIdentity($working_copy); $configuration_manager->setWorkingCopyIdentity($working_copy);
$repository_api = ArcanistRepositoryAPI::newAPIFromConfigurationManager( $repository_api = ArcanistRepositoryAPI::newAPIFromConfigurationManager(
$configuration_manager); $configuration_manager);