diff --git a/src/applications/diffusion/controller/DiffusionRepositoryManagePanelsController.php b/src/applications/diffusion/controller/DiffusionRepositoryManagePanelsController.php index 8a9f258ebe..a5541acabc 100644 --- a/src/applications/diffusion/controller/DiffusionRepositoryManagePanelsController.php +++ b/src/applications/diffusion/controller/DiffusionRepositoryManagePanelsController.php @@ -27,11 +27,16 @@ final class DiffusionRepositoryManagePanelsController $panels = DiffusionRepositoryManagementPanel::getAllPanels(); - foreach ($panels as $panel) { + foreach ($panels as $key => $panel) { $panel ->setViewer($viewer) ->setRepository($repository) ->setController($this); + + if (!$panel->shouldEnableForRepository($repository)) { + unset($panels[$key]); + continue; + } } $selected = $request->getURIData('panel'); diff --git a/src/applications/diffusion/management/DiffusionRepositoryAutomationManagementPanel.php b/src/applications/diffusion/management/DiffusionRepositoryAutomationManagementPanel.php index 764f58c5bd..14182a0444 100644 --- a/src/applications/diffusion/management/DiffusionRepositoryAutomationManagementPanel.php +++ b/src/applications/diffusion/management/DiffusionRepositoryAutomationManagementPanel.php @@ -13,6 +13,11 @@ final class DiffusionRepositoryAutomationManagementPanel return 800; } + public function shouldEnableForRepository( + PhabricatorRepository $repository) { + return $repository->isGit(); + } + protected function getEditEngineFieldKeys() { return array( 'automationBlueprintPHIDs', diff --git a/src/applications/diffusion/management/DiffusionRepositoryBranchesManagementPanel.php b/src/applications/diffusion/management/DiffusionRepositoryBranchesManagementPanel.php index 66ac0877dd..b3e7926cfc 100644 --- a/src/applications/diffusion/management/DiffusionRepositoryBranchesManagementPanel.php +++ b/src/applications/diffusion/management/DiffusionRepositoryBranchesManagementPanel.php @@ -13,6 +13,11 @@ final class DiffusionRepositoryBranchesManagementPanel return 1000; } + public function shouldEnableForRepository( + PhabricatorRepository $repository) { + return ($repository->isGit() || $repository->isHg()); + } + public function getManagementPanelIcon() { $repository = $this->getRepository(); diff --git a/src/applications/diffusion/management/DiffusionRepositoryManagementPanel.php b/src/applications/diffusion/management/DiffusionRepositoryManagementPanel.php index 8d23e87406..34047cdb89 100644 --- a/src/applications/diffusion/management/DiffusionRepositoryManagementPanel.php +++ b/src/applications/diffusion/management/DiffusionRepositoryManagementPanel.php @@ -46,6 +46,11 @@ abstract class DiffusionRepositoryManagementPanel return array(); } + public function shouldEnableForRepository( + PhabricatorRepository $repository) { + return true; + } + final protected function newActions() { $actions = $this->buildManagementPanelActions(); if (!$actions) { diff --git a/src/applications/diffusion/management/DiffusionRepositoryStagingManagementPanel.php b/src/applications/diffusion/management/DiffusionRepositoryStagingManagementPanel.php index 0d8f9379be..79b716e82a 100644 --- a/src/applications/diffusion/management/DiffusionRepositoryStagingManagementPanel.php +++ b/src/applications/diffusion/management/DiffusionRepositoryStagingManagementPanel.php @@ -13,6 +13,12 @@ final class DiffusionRepositoryStagingManagementPanel return 700; } + public function shouldEnableForRepository( + PhabricatorRepository $repository) { + return $repository->isGit(); + } + + public function getManagementPanelIcon() { $repository = $this->getRepository(); diff --git a/src/applications/repository/storage/PhabricatorRepositoryURI.php b/src/applications/repository/storage/PhabricatorRepositoryURI.php index 227b13012f..21fc791de5 100644 --- a/src/applications/repository/storage/PhabricatorRepositoryURI.php +++ b/src/applications/repository/storage/PhabricatorRepositoryURI.php @@ -310,9 +310,15 @@ final class PhabricatorRepositoryURI private function getForcedProtocol() { + $repository = $this->getRepository(); + switch ($this->getBuiltinProtocol()) { case self::BUILTIN_PROTOCOL_SSH: - return 'ssh'; + if ($repository->isSVN()) { + return 'svn+ssh'; + } else { + return 'ssh'; + } case self::BUILTIN_PROTOCOL_HTTP: return 'http'; case self::BUILTIN_PROTOCOL_HTTPS: @@ -382,6 +388,7 @@ final class PhabricatorRepositoryURI $suffix = '/'; } else { $suffix = ''; + $clone_name = ''; } switch ($this->getBuiltinIdentifier()) {