Support ID-based repository URIs, and canonicalize repository URIs
Summary: Ref T4245. Make `/diffusion/123/` work, but redirect the user to `/diffusion/XYZ/` if the repository has a callsign. (Right now, every repository has a callsign, so this always redirects.) Also redirect `/R123:abcdef` if the repository has a callsign. Also also, move the Pull garbage collector somewhere more sensible. Test Plan: - Added test coverage. - Visited `/diffusion/1/`, was redirected. - Visited `/diffusion/R1:abcdef`, was redirected. - Browsed Diffusion normally. Reviewers: chad Reviewed By: chad Maniphest Tasks: T4245 Differential Revision: https://secure.phabricator.com/D15301
This commit is contained in:
@@ -64,6 +64,20 @@ abstract class DiffusionController extends PhabricatorController {
|
||||
return new Aphront404Response();
|
||||
}
|
||||
|
||||
// If the client is making a request like "/diffusion/1/...", but the
|
||||
// repository has a different canonical path like "/diffusion/XYZ/...",
|
||||
// redirect them to the canonical path.
|
||||
|
||||
$request_path = $request->getPath();
|
||||
$repository = $drequest->getRepository();
|
||||
|
||||
$canonical_path = $repository->getCanonicalPath($request_path);
|
||||
if ($canonical_path !== null) {
|
||||
if ($canonical_path != $request_path) {
|
||||
return id(new AphrontRedirectResponse())->setURI($canonical_path);
|
||||
}
|
||||
}
|
||||
|
||||
$this->diffusionRequest = $drequest;
|
||||
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user