Add very basic tag support to Diffusion

Summary: Lists the 25 most recent tags on the "Repository" page.

Test Plan: Looked at a git repository with a tag, saw it. Looked at HG/SVN repos, they didn't break.

Reviewers: davidreuss, 20after4, btrahan, vrana, jungejason

Reviewed By: davidreuss

CC: aran

Maniphest Tasks: T1130

Differential Revision: https://secure.phabricator.com/D2255
This commit is contained in:
epriestley
2012-04-18 08:02:08 -07:00
parent 091248ebe6
commit dec8acd803
20 changed files with 541 additions and 19 deletions

View File

@@ -93,6 +93,8 @@ final class DiffusionRepositoryController extends DiffusionController {
$content[] = $browse_panel;
$content[] = $this->buildTagListTable($drequest);
if ($drequest->getBranch() !== null) {
$branch_query = DiffusionBranchQuery::newFromDiffusionRequest($drequest);
$branches = $branch_query->loadBranches();
@@ -152,4 +154,37 @@ final class DiffusionRepositoryController extends DiffusionController {
return $panel;
}
private function buildTagListTable(DiffusionRequest $drequest) {
$query = DiffusionTagListQuery::newFromDiffusionRequest($drequest);
$query->setLimit(25);
$tags = $query->loadTags();
if (!$tags) {
return null;
}
$commits = id(new PhabricatorAuditCommitQuery())
->withIdentifiers(
$drequest->getRepository()->getID(),
mpull($tags, 'getCommitIdentifier'))
->needCommitData(true)
->execute();
$view = new DiffusionTagListView();
$view->setDiffusionRequest($drequest);
$view->setTags($tags);
$view->setUser($this->getRequest()->getUser());
$view->setCommits($commits);
$phids = $view->getRequiredHandlePHIDs();
$handles = id(new PhabricatorObjectHandleData($phids))->loadHandles();
$view->setHandles($handles);
$panel = new AphrontPanelView();
$panel->setHeader('Tags');
$panel->appendChild($view);
return $panel;
}
}

View File

@@ -6,13 +6,16 @@
phutil_require_module('phabricator', 'applications/audit/query/commit');
phutil_require_module('phabricator', 'applications/diffusion/controller/base');
phutil_require_module('phabricator', 'applications/diffusion/query/branch/base');
phutil_require_module('phabricator', 'applications/diffusion/query/browse/base');
phutil_require_module('phabricator', 'applications/diffusion/query/history/base');
phutil_require_module('phabricator', 'applications/diffusion/query/taglist/base');
phutil_require_module('phabricator', 'applications/diffusion/view/branchtable');
phutil_require_module('phabricator', 'applications/diffusion/view/browsetable');
phutil_require_module('phabricator', 'applications/diffusion/view/historytable');
phutil_require_module('phabricator', 'applications/diffusion/view/taglist');
phutil_require_module('phabricator', 'applications/phid/handle/data');
phutil_require_module('phabricator', 'applications/repository/constants/repositorytype');
phutil_require_module('phabricator', 'view/control/table');