Page MenuHomePhabricator

D20493.diff
No OneTemporary

D20493.diff

diff --git a/src/applications/diffusion/controller/DiffusionBranchTableController.php b/src/applications/diffusion/controller/DiffusionBranchTableController.php
--- a/src/applications/diffusion/controller/DiffusionBranchTableController.php
+++ b/src/applications/diffusion/controller/DiffusionBranchTableController.php
@@ -37,6 +37,12 @@
$branches = DiffusionRepositoryRef::loadAllFromDictionaries($branches);
+ // If there is one page of results or fewer, sort branches so the default
+ // branch is on top and permanent branches are below it.
+ if (!$pager->getOffset() && !$pager->getHasMorePages()) {
+ $branches = $this->sortBranches($repository, $branches);
+ }
+
$content = null;
if (!$branches) {
$content = $this->renderStatusMessage(
@@ -97,4 +103,38 @@
->appendChild($view);
}
+ private function sortBranches(
+ PhabricatorRepository $repository,
+ array $branches) {
+
+ $publisher = $repository->newPublisher();
+ $default_branch = $repository->getDefaultBranch();
+
+ $vectors = array();
+ foreach ($branches as $key => $branch) {
+ $short_name = $branch->getShortName();
+
+ if ($short_name === $default_branch) {
+ $order_default = 0;
+ } else {
+ $order_default = 1;
+ }
+
+ if ($publisher->shouldPublishRef($branch)) {
+ $order_permanent = 0;
+ } else {
+ $order_permanent = 1;
+ }
+
+ $vectors[$key] = id(new PhutilSortVector())
+ ->addInt($order_default)
+ ->addInt($order_permanent)
+ ->addString($short_name);
+ }
+
+ $vectors = msortv($vectors, 'getSelf');
+
+ return array_select_keys($branches, array_keys($vectors));
+ }
+
}
diff --git a/src/applications/diffusion/view/DiffusionBranchListView.php b/src/applications/diffusion/view/DiffusionBranchListView.php
--- a/src/applications/diffusion/view/DiffusionBranchListView.php
+++ b/src/applications/diffusion/view/DiffusionBranchListView.php
@@ -33,10 +33,11 @@
Javelin::initBehavior('phabricator-tooltips');
$list = id(new PHUIObjectItemListView())
- ->setFlush(true)
->addClass('diffusion-history-list')
->addClass('diffusion-branch-list');
+ $publisher = $repository->newPublisher();
+
foreach ($this->branches as $branch) {
$build_view = null;
$button_bar = new PHUIButtonBarView();
@@ -116,8 +117,16 @@
));
if ($branch->getShortName() == $repository->getDefaultBranch()) {
- $item->setStatusIcon('fa-code-fork', pht('Default Branch'));
+ $item->setStatusIcon('fa-star', pht('Default Branch'));
+ } else {
+ if ($publisher->shouldPublishRef($branch)) {
+ $item->setStatusIcon('fa-code-fork', pht('Permanent Ref'));
+ } else {
+ $item->setStatusIcon(
+ 'fa-folder-open-o grey', pht('Not a Permanent Ref'));
+ }
}
+
$item->addAttribute(array($datetime));
if ($can_close_branches) {

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 10, 10:34 AM (2 w, 5 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7429142
Default Alt Text
D20493.diff (2 KB)

Event Timeline