mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-18 12:52:42 +01:00
Improve error messages for running git clone
against a Mercurial repository
Summary: Fixes T11938. Note that there's a subcase here: if you `hg clone` or `svn checkout` a short `/source/` URI that ends in `.git`, we miss the lookup and don't get this far, so you still get a generic error message. Hopefully it is clear enough on its own that `proto://.../blah.git` is, in fact, a Git repository, since it says ".git" at the end. If that doesn't prove to be true, we can be more surgical about this. Test Plan: ``` $ git clone ssh://local@localvault.phacility.com/source/quack.notgit/ Cloning into 'quack.notgit'... phabricator-ssh-exec: This repository ("quack.notgit") is not a Git repository. Use "hg" to interact with this repository. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. ``` ``` $ hg clone ssh://local@localvault.phacility.com/source/phabx remote: phabricator-ssh-exec: This repository ("phabx") is not a Mercurial repository. Use "git" to interact with this repository. abort: no suitable response from remote hg! ``` Reviewers: chad Reviewed By: chad Maniphest Tasks: T11938 Differential Revision: https://secure.phabricator.com/D16976
This commit is contained in:
parent
7c37377e0d
commit
faf983614c
4 changed files with 36 additions and 0 deletions
|
@ -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()));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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()));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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()));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue