mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-26 00:32:42 +01:00
Add separate exception for when the repository clone is unreadable.
Summary: Show a more specific exception when the local clone cannot be read because of permission issues. Test Plan: Create a repository in an unreadable location and check for the right exception. Reviewers: epriestley Reviewed By: epriestley CC: aran, Korvin Maniphest Tasks: T2368 Differential Revision: https://secure.phabricator.com/D4868
This commit is contained in:
parent
76aee9985a
commit
ca0d6aca10
3 changed files with 26 additions and 6 deletions
|
@ -12,9 +12,7 @@ final class DiffusionGitRequest extends DiffusionRequest {
|
|||
protected function didInitialize() {
|
||||
$repository = $this->getRepository();
|
||||
|
||||
if (!Filesystem::pathExists($repository->getLocalPath())) {
|
||||
$this->raiseCloneException();
|
||||
}
|
||||
$this->validateWorkingCopy($repository->getLocalPath());
|
||||
|
||||
if (!$this->commit) {
|
||||
return;
|
||||
|
|
|
@ -12,9 +12,7 @@ final class DiffusionMercurialRequest extends DiffusionRequest {
|
|||
protected function didInitialize() {
|
||||
$repository = $this->getRepository();
|
||||
|
||||
if (!Filesystem::pathExists($repository->getLocalPath())) {
|
||||
$this->raiseCloneException();
|
||||
}
|
||||
$this->validateWorkingCopy($repository->getLocalPath());
|
||||
|
||||
// Expand abbreviated hashes to full hashes so "/rXnnnn" (i.e., fewer than
|
||||
// 40 characters) works correctly.
|
||||
|
|
|
@ -544,6 +544,30 @@ abstract class DiffusionRequest {
|
|||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check that the working copy of the repository is present and readable.
|
||||
*
|
||||
* @param string Path to the working copy.
|
||||
*/
|
||||
protected function validateWorkingCopy($path) {
|
||||
if (!is_readable(dirname($path))) {
|
||||
$this->raisePermissionException();
|
||||
}
|
||||
|
||||
if (!Filesystem::pathExists($path)) {
|
||||
$this->raiseCloneException();
|
||||
}
|
||||
}
|
||||
|
||||
protected function raisePermissionException() {
|
||||
$host = php_uname('n');
|
||||
$callsign = $this->getRepository()->getCallsign();
|
||||
throw new DiffusionSetupException(
|
||||
"The clone of this repository ('{$callsign}') on the local machine " .
|
||||
"('{$host}') could not be read. Ensure that the repository is in a " .
|
||||
"location where the web server has read permissions.");
|
||||
}
|
||||
|
||||
protected function raiseCloneException() {
|
||||
$host = php_uname('n');
|
||||
$callsign = $this->getRepository()->getCallsign();
|
||||
|
|
Loading…
Reference in a new issue