Page MenuHomePhabricator

D18676.diff
No OneTemporary

D18676.diff

diff --git a/src/applications/diffusion/application/PhabricatorDiffusionApplication.php b/src/applications/diffusion/application/PhabricatorDiffusionApplication.php
--- a/src/applications/diffusion/application/PhabricatorDiffusionApplication.php
+++ b/src/applications/diffusion/application/PhabricatorDiffusionApplication.php
@@ -69,10 +69,11 @@
'branches/(?P<dblob>.*)' => 'DiffusionBranchTableController',
'refs/(?P<dblob>.*)' => 'DiffusionRefTableController',
'lint/(?P<dblob>.*)' => 'DiffusionLintController',
- 'commit/(?P<commit>[a-z0-9]+)/branches/'
- => 'DiffusionCommitBranchesController',
- 'commit/(?P<commit>[a-z0-9]+)/tags/'
- => 'DiffusionCommitTagsController',
+ 'commit/(?P<commit>[a-z0-9]+)' => array(
+ '/?' => 'DiffusionCommitController',
+ '/branches/' => 'DiffusionCommitBranchesController',
+ '/tags/' => 'DiffusionCommitTagsController',
+ ),
'compare/' => 'DiffusionCompareController',
'manage/(?:(?P<panel>[^/]+)/)?'
=> 'DiffusionRepositoryManagePanelsController',
diff --git a/src/applications/diffusion/controller/DiffusionCommitController.php b/src/applications/diffusion/controller/DiffusionCommitController.php
--- a/src/applications/diffusion/controller/DiffusionCommitController.php
+++ b/src/applications/diffusion/controller/DiffusionCommitController.php
@@ -22,17 +22,27 @@
$drequest = $this->getDiffusionRequest();
$viewer = $request->getUser();
+ $repository = $drequest->getRepository();
+ $commit_identifier = $drequest->getCommit();
+
+ // If this page is being accessed via "/source/xyz/commit/...", redirect
+ // to the canonical URI.
+ $has_callsign = strlen($request->getURIData('repositoryCallsign'));
+ $has_id = strlen($request->getURIData('repositoryID'));
+ if (!$has_callsign && !$has_id) {
+ $canonical_uri = $repository->getCommitURI($commit_identifier);
+ return id(new AphrontRedirectResponse())
+ ->setURI($canonical_uri);
+ }
if ($request->getStr('diff')) {
return $this->buildRawDiffResponse($drequest);
}
- $repository = $drequest->getRepository();
-
$commit = id(new DiffusionCommitQuery())
->setViewer($viewer)
->withRepository($repository)
- ->withIdentifiers(array($drequest->getCommit()))
+ ->withIdentifiers(array($commit_identifier))
->needCommitData(true)
->needAuditRequests(true)
->executeOne();

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 24, 4:27 AM (1 d, 9 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7713291
Default Alt Text
D18676.diff (2 KB)

Event Timeline