From c3fe03db08fce644eadae88e3183657be1b95c30 Mon Sep 17 00:00:00 2001 From: Ben Alpert Date: Sun, 9 Feb 2014 08:55:16 -0800 Subject: [PATCH] Detect repo for 'browse'; don't require project ID Test Plan: Ran 'arc browse' in a repo that contains a .arcconfig and one without. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley CC: Korvin, epriestley, aran Differential Revision: https://secure.phabricator.com/D8173 --- src/workflow/ArcanistBaseWorkflow.php | 18 ++++++++++++++++-- src/workflow/ArcanistBrowseWorkflow.php | 12 ++---------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/workflow/ArcanistBaseWorkflow.php b/src/workflow/ArcanistBaseWorkflow.php index cb5e27a5..421b0496 100644 --- a/src/workflow/ArcanistBaseWorkflow.php +++ b/src/workflow/ArcanistBaseWorkflow.php @@ -1527,7 +1527,7 @@ abstract class ArcanistBaseWorkflow extends Phobject { /** * Get the PHID of the Phabricator repository this working copy corresponds - * to. Returns `null` no repository can be identified. + * to. Returns `null` if no repository can be identified. * * @return phid|null Repository PHID, or null if no repository can be * identified. @@ -1541,7 +1541,7 @@ abstract class ArcanistBaseWorkflow extends Phobject { /** * Get the callsign of the Phabricator repository this working copy - * corresponds to. Returns `null` no repository can be identified. + * corresponds to. Returns `null` if no repository can be identified. * * @return string|null Repository callsign, or null if no repository can be * identified. @@ -1553,6 +1553,20 @@ abstract class ArcanistBaseWorkflow extends Phobject { } + /** + * Get the URI of the Phabricator repository this working copy + * corresponds to. Returns `null` if no repository can be identified. + * + * @return string|null Repository URI, or null if no repository can be + * identified. + * + * @task phabrep + */ + protected function getRepositoryURI() { + return idx($this->getRepositoryInformation(), 'uri'); + } + + /** * Get human-readable reasoning explaining how `arc` evaluated which * Phabricator repository corresponds to this working copy. Used by diff --git a/src/workflow/ArcanistBrowseWorkflow.php b/src/workflow/ArcanistBrowseWorkflow.php index 55dfc613..e5e13ec0 100644 --- a/src/workflow/ArcanistBrowseWorkflow.php +++ b/src/workflow/ArcanistBrowseWorkflow.php @@ -108,18 +108,10 @@ EOTEXT } private function getBaseURI() { - $conduit = $this->getConduit(); - $project_id = $this->getWorkingCopy()->getProjectID(); - $project_info = $this->getConduit()->callMethodSynchronous( - 'arcanist.projectinfo', - array( - 'name' => $project_id, - )); - - $repo_info = $project_info['repository']; + $repo_uri = $this->getRepositoryURI(); $branch = $this->getArgument('branch', 'master'); - return $repo_info['uri'].'browse/'.$branch.'/'; + return $repo_uri.'browse/'.$branch.'/'; } private function getBrowserCommand() {