Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
3.8 kB · 149 lines
PHP
at commit e0faa667
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150<?php
final class DiffusionRefTableController extends DiffusionController {
public function shouldAllowPublic() { return true; }
protected function processDiffusionRequest(AphrontRequest $request) { $viewer = $this->getViewer();
$drequest = $this->getDiffusionRequest(); $repository = $drequest->getRepository();
if (!$drequest->supportsBranches()) { return $this->newDialog() ->setTitle(pht('No Ref Support')) ->appendParagraph( pht( 'The version control system this repository uses does not '. 'support named references, so you can not resolve or list '. 'repository refs in this repository.')) ->addCancelButton($repository->getURI()); }
$ref_name = $drequest->getBranch();
$cache_query = id(new DiffusionCachedResolveRefsQuery()) ->setRepository($repository); if ($ref_name !== null) { $cache_query->withRefs(array($ref_name)); } $cache_refs = $cache_query->execute();
$vcs_refs = DiffusionQuery::callConduitWithDiffusionRequest( $viewer, $drequest, 'diffusion.resolverefs', array( 'refs' => array($ref_name), ));
$all = array(); foreach ($cache_refs as $ref => $results) { foreach ($results as $result) { $id = $result['type'].'/'.$result['identifier']; $all[$ref][$id]['cache'] = $result; } }
foreach ($vcs_refs as $ref => $results) { foreach ($results as $result) { $id = $result['type'].'/'.$result['identifier']; $all[$ref][$id]['vcs'] = $result; } }
$rows = array(); foreach ($all as $ref => $results) { foreach ($results as $info) { $cache = idx($info, 'cache', array()); $vcs = idx($info, 'vcs', array());
$type = idx($vcs, 'type'); if (!$type) { $type = idx($cache, 'type'); }
$hash = idx($vcs, 'identifier'); if ($hash !== null) { $hash = DiffusionView::linkCommit( $repository, $hash); }
$cached_hash = idx($cache, 'identifier'); if ($cached_hash !== null) { $cached_hash = DiffusionView::linkCommit( $repository, $cached_hash); }
$closed = idx($vcs, 'closed', false); if (!$vcs) { $state = null; } else { $state = $closed ? pht('Closed') : pht('Open'); }
$cached_closed = idx($cache, 'closed', false); if (!$cache) { $cached_state = null; } else { $cached_state = $cached_closed ? pht('Closed') : pht('Open'); }
$alternate = idx($vcs, 'alternate'); if ($alternate !== null) { $alternate = DiffusionView::linkCommit( $repository, $alternate); }
$rows[] = array( $ref, $type, $hash, $cached_hash, $state, $cached_state, $alternate, ); } }
$table = id(new AphrontTableView($rows)) ->setHeaders( array( pht('Ref'), pht('Type'), pht('Hash'), pht('Cached Hash'), pht('State'), pht('Cached State'), pht('Alternate'), ));
$content = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Ref "%s"', $ref_name)) ->setTable($table);
$crumbs = $this->buildCrumbs(array()); $crumbs->addTextCrumb(pht('Refs'));
return $this->buildApplicationPage( array( $crumbs, $content, ), array( 'title' => array( pht('Refs'), $repository->getMonogram(), $ref_name, ), )); }
}