diff --git a/src/applications/diffusion/ssh/DiffusionGitSSHWorkflow.php b/src/applications/diffusion/ssh/DiffusionGitSSHWorkflow.php index 52a8478fdc..6de16e723d 100644 --- a/src/applications/diffusion/ssh/DiffusionGitSSHWorkflow.php +++ b/src/applications/diffusion/ssh/DiffusionGitSSHWorkflow.php @@ -35,4 +35,14 @@ abstract class DiffusionGitSSHWorkflow } } + protected function raiseWrongVCSException( + PhabricatorRepository $repository) { + throw new Exception( + pht( + 'This repository ("%s") is not a Git repository. Use "%s" to '. + 'interact with this repository.', + $repository->getDisplayName(), + $repository->getVersionControlSystem())); + } + } diff --git a/src/applications/diffusion/ssh/DiffusionMercurialServeSSHWorkflow.php b/src/applications/diffusion/ssh/DiffusionMercurialServeSSHWorkflow.php index 15dd9d7c6b..4508ae53da 100644 --- a/src/applications/diffusion/ssh/DiffusionMercurialServeSSHWorkflow.php +++ b/src/applications/diffusion/ssh/DiffusionMercurialServeSSHWorkflow.php @@ -119,4 +119,14 @@ final class DiffusionMercurialServeSSHWorkflow return $raw_message; } + protected function raiseWrongVCSException( + PhabricatorRepository $repository) { + throw new Exception( + pht( + 'This repository ("%s") is not a Mercurial repository. Use "%s" to '. + 'interact with this repository.', + $repository->getDisplayName(), + $repository->getVersionControlSystem())); + } + } diff --git a/src/applications/diffusion/ssh/DiffusionSSHWorkflow.php b/src/applications/diffusion/ssh/DiffusionSSHWorkflow.php index 0115858832..0e5ad7bbe1 100644 --- a/src/applications/diffusion/ssh/DiffusionSSHWorkflow.php +++ b/src/applications/diffusion/ssh/DiffusionSSHWorkflow.php @@ -43,6 +43,8 @@ abstract class DiffusionSSHWorkflow extends PhabricatorSSHWorkflow { */ abstract protected function identifyRepository(); abstract protected function executeRepositoryOperations(); + abstract protected function raiseWrongVCSException( + PhabricatorRepository $repository); protected function getBaseRequestPath() { return $this->baseRequestPath; @@ -199,6 +201,10 @@ abstract class DiffusionSSHWorkflow extends PhabricatorSSHWorkflow { $repository->getDisplayName())); } + if ($repository->getVersionControlSystem() != $vcs) { + $this->raiseWrongVCSException($repository); + } + return $repository; } diff --git a/src/applications/diffusion/ssh/DiffusionSubversionServeSSHWorkflow.php b/src/applications/diffusion/ssh/DiffusionSubversionServeSSHWorkflow.php index 3a8b516443..f2a932f2bb 100644 --- a/src/applications/diffusion/ssh/DiffusionSubversionServeSSHWorkflow.php +++ b/src/applications/diffusion/ssh/DiffusionSubversionServeSSHWorkflow.php @@ -449,4 +449,14 @@ final class DiffusionSubversionServeSSHWorkflow return $path; } + protected function raiseWrongVCSException( + PhabricatorRepository $repository) { + throw new Exception( + pht( + 'This repository ("%s") is not a Subversion repository. Use "%s" to '. + 'interact with this repository.', + $repository->getDisplayName(), + $repository->getVersionControlSystem())); + } + }