mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-01 11:12:42 +01:00
35ccda922a
Summary: Ref T4327. This is general cleanup since I was in this area of the code. Primarily, the Mercurial implementation here was completely broken and wrong: - It returned only one branch, but a commit can be present on many branches. - It did not account for multiple branch heads. - It returned a result implying the branch head pointed at the queried commit, which is no consistent or accurate. Simplify the amount of API we're dealing with by collapsing this method into the very similar `diffusion.branchquery` method. Test Plan: Looked at mercurial and git repositories and commits, branch information seemed correct. Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T4327 Differential Revision: https://secure.phabricator.com/D8003
49 lines
1.3 KiB
PHP
49 lines
1.3 KiB
PHP
<?php
|
|
|
|
final class DiffusionCommitBranchesController extends DiffusionController {
|
|
|
|
public function shouldAllowPublic() {
|
|
return true;
|
|
}
|
|
|
|
public function willProcessRequest(array $data) {
|
|
$data['user'] = $this->getRequest()->getUser();
|
|
$this->diffusionRequest = DiffusionRequest::newFromDictionary($data);
|
|
}
|
|
|
|
public function processRequest() {
|
|
$request = $this->getDiffusionRequest();
|
|
|
|
$branches = array();
|
|
try {
|
|
$branches = $this->callConduitWithDiffusionRequest(
|
|
'diffusion.branchquery',
|
|
array(
|
|
'contains' => $request->getCommit(),
|
|
));
|
|
} catch (ConduitException $ex) {
|
|
if ($ex->getMessage() != 'ERR-UNSUPPORTED-VCS') {
|
|
throw $ex;
|
|
}
|
|
}
|
|
|
|
$branches = DiffusionRepositoryRef::loadAllFromDictionaries($branches);
|
|
|
|
$branch_links = array();
|
|
foreach ($branches as $branch) {
|
|
$branch_links[] = phutil_tag(
|
|
'a',
|
|
array(
|
|
'href' => $request->generateURI(
|
|
array(
|
|
'action' => 'browse',
|
|
'branch' => $branch->getShortName(),
|
|
)),
|
|
),
|
|
$branch->getShortName());
|
|
}
|
|
|
|
return id(new AphrontAjaxResponse())
|
|
->setContent($branch_links ? implode(', ', $branch_links) : 'None');
|
|
}
|
|
}
|