diff --git a/src/applications/diffusion/conduit/ConduitAPI_diffusion_branchquery_Method.php b/src/applications/diffusion/conduit/ConduitAPI_diffusion_branchquery_Method.php --- a/src/applications/diffusion/conduit/ConduitAPI_diffusion_branchquery_Method.php +++ b/src/applications/diffusion/conduit/ConduitAPI_diffusion_branchquery_Method.php @@ -100,7 +100,7 @@ return $this->processBranchRefs($request, $refs); } - protected function getSVNResult() { + protected function getSVNResult(ConduitAPIRequest $request) { // Since SVN doesn't have meaningful branches, just return nothing for all // queries. return array(); diff --git a/src/applications/diffusion/controller/DiffusionRepositoryController.php b/src/applications/diffusion/controller/DiffusionRepositoryController.php --- a/src/applications/diffusion/controller/DiffusionRepositoryController.php +++ b/src/applications/diffusion/controller/DiffusionRepositoryController.php @@ -183,8 +183,10 @@ $uri = new PhutilURI(PhabricatorEnv::getProductionURI($repo_path)); if ($repository->isSVN()) { + $label = pht('Checkout (SSH)'); $uri->setProtocol('svn+ssh'); } else { + $label = pht('Clone (SSH)'); $uri->setProtocol('ssh'); } @@ -196,11 +198,12 @@ $uri->setPort(PhabricatorEnv::getEnvConfig('diffusion.ssh-port')); $clone_uri = $this->renderCloneURI( + $repository, $uri, $serve_ssh, '/settings/panel/ssh/'); - $view->addProperty(pht('Clone URI (SSH)'), $clone_uri); + $view->addProperty(pht('Checkout (SSH)'), $clone_uri); } $serve_http = $repository->getServeOverHTTP(); @@ -208,12 +211,19 @@ $http_uri = PhabricatorEnv::getProductionURI($repo_path); $clone_uri = $this->renderCloneURI( + $repository, $http_uri, $serve_http, PhabricatorEnv::getEnvConfig('diffusion.allow-http-auth') ? '/settings/panel/vcspassword/' : null); + if ($repository->isSVN()) { + $label = pht('Checkout (HTTP)'); + } else { + $label = pht('Clone (HTTP)'); + } + $view->addProperty(pht('Clone URI (HTTP)'), $clone_uri); } } else { @@ -221,14 +231,16 @@ case PhabricatorRepositoryType::REPOSITORY_TYPE_GIT: case PhabricatorRepositoryType::REPOSITORY_TYPE_MERCURIAL: $view->addProperty( - pht('Clone URI'), + pht('Clone'), $this->renderCloneURI( + $repository, $repository->getPublicRemoteURI())); break; case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN: $view->addProperty( - pht('Repository Root'), + pht('Checkout'), $this->renderCloneURI( + $repository, $repository->getPublicRemoteURI())); break; } @@ -548,6 +560,7 @@ } private function renderCloneURI( + PhabricatorRepository $repository, $uri, $serve_mode = null, $manage_uri = null) { @@ -556,11 +569,23 @@ Javelin::initBehavior('select-on-click'); + switch ($repository->getVersionControlSystem()) { + case PhabricatorRepositoryType::REPOSITORY_TYPE_GIT: + $command = csprintf('git clone %s %s', $uri, $repository->getName()); + break; + case PhabricatorRepositoryType::REPOSITORY_TYPE_MERCURIAL: + $command = csprintf('hg clone %s %s', $uri, $repository->getName()); + break; + case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN: + $command = csprintf('svn checkout %s %s', $uri, $repository->getName()); + break; + } + $input = javelin_tag( 'input', array( 'type' => 'text', - 'value' => (string)$uri, + 'value' => (string)$command, 'class' => 'diffusion-clone-uri', 'sigil' => 'select-on-click', 'readonly' => 'true',