Page MenuHomePhabricator

D20862.id.diff
No OneTemporary

D20862.id.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -996,6 +996,7 @@
'DiffusionRepositoryManagementOtherPanelGroup' => 'applications/diffusion/management/DiffusionRepositoryManagementOtherPanelGroup.php',
'DiffusionRepositoryManagementPanel' => 'applications/diffusion/management/DiffusionRepositoryManagementPanel.php',
'DiffusionRepositoryManagementPanelGroup' => 'applications/diffusion/management/DiffusionRepositoryManagementPanelGroup.php',
+ 'DiffusionRepositoryMetricsSearchEngineAttachment' => 'applications/diffusion/engineextension/DiffusionRepositoryMetricsSearchEngineAttachment.php',
'DiffusionRepositoryPath' => 'applications/diffusion/data/DiffusionRepositoryPath.php',
'DiffusionRepositoryPoliciesManagementPanel' => 'applications/diffusion/management/DiffusionRepositoryPoliciesManagementPanel.php',
'DiffusionRepositoryProfilePictureController' => 'applications/diffusion/controller/DiffusionRepositoryProfilePictureController.php',
@@ -6964,6 +6965,7 @@
'DiffusionRepositoryManagementOtherPanelGroup' => 'DiffusionRepositoryManagementPanelGroup',
'DiffusionRepositoryManagementPanel' => 'Phobject',
'DiffusionRepositoryManagementPanelGroup' => 'Phobject',
+ 'DiffusionRepositoryMetricsSearchEngineAttachment' => 'PhabricatorSearchEngineAttachment',
'DiffusionRepositoryPath' => 'Phobject',
'DiffusionRepositoryPoliciesManagementPanel' => 'DiffusionRepositoryManagementPanel',
'DiffusionRepositoryProfilePictureController' => 'DiffusionController',
diff --git a/src/applications/diffusion/engineextension/DiffusionRepositoryMetricsSearchEngineAttachment.php b/src/applications/diffusion/engineextension/DiffusionRepositoryMetricsSearchEngineAttachment.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/engineextension/DiffusionRepositoryMetricsSearchEngineAttachment.php
@@ -0,0 +1,41 @@
+<?php
+
+final class DiffusionRepositoryMetricsSearchEngineAttachment
+ extends PhabricatorSearchEngineAttachment {
+
+ public function getAttachmentName() {
+ return pht('Repository Metrics');
+ }
+
+ public function getAttachmentDescription() {
+ return pht(
+ 'Get metrics (like commit count and most recent commit) for each '.
+ 'repository.');
+ }
+
+ public function willLoadAttachmentData($query, $spec) {
+ $query
+ ->needCommitCounts(true)
+ ->needMostRecentCommits(true);
+ }
+
+ public function getAttachmentForObject($object, $data, $spec) {
+ $commit = $object->getMostRecentCommit();
+ if ($commit !== null) {
+ $recent_commit = $commit->getFieldValuesForConduit();
+ } else {
+ $recent_commit = null;
+ }
+
+ $commit_count = $object->getCommitCount();
+ if ($commit_count !== null) {
+ $commit_count = (int)$commit_count;
+ }
+
+ return array(
+ 'commitCount' => $commit_count,
+ 'recentCommit' => $recent_commit,
+ );
+ }
+
+}
diff --git a/src/applications/repository/query/PhabricatorRepositoryQuery.php b/src/applications/repository/query/PhabricatorRepositoryQuery.php
--- a/src/applications/repository/query/PhabricatorRepositoryQuery.php
+++ b/src/applications/repository/query/PhabricatorRepositoryQuery.php
@@ -215,6 +215,8 @@
$commits = id(new DiffusionCommitQuery())
->setViewer($this->getViewer())
->withIDs($commit_ids)
+ ->needCommitData(true)
+ ->needIdentities(true)
->execute();
} else {
$commits = array();
diff --git a/src/applications/repository/storage/PhabricatorRepository.php b/src/applications/repository/storage/PhabricatorRepository.php
--- a/src/applications/repository/storage/PhabricatorRepository.php
+++ b/src/applications/repository/storage/PhabricatorRepository.php
@@ -2757,6 +2757,14 @@
->setDescription(
pht(
'The "Fetch" and "Permanent Ref" rules for this repository.')),
+ id(new PhabricatorConduitSearchFieldSpecification())
+ ->setKey('defaultBranch')
+ ->setType('string?')
+ ->setDescription(pht('Default branch name.')),
+ id(new PhabricatorConduitSearchFieldSpecification())
+ ->setKey('description')
+ ->setType('remarkup')
+ ->setDescription(pht('Repository description.')),
);
}
@@ -2769,6 +2777,11 @@
$track_rules = $this->getStringListForConduit($track_rules);
$permanent_rules = $this->getStringListForConduit($permanent_rules);
+ $default_branch = $this->getDefaultBranch();
+ if (!strlen($default_branch)) {
+ $default_branch = null;
+ }
+
return array(
'name' => $this->getName(),
'vcs' => $this->getVersionControlSystem(),
@@ -2782,6 +2795,10 @@
'trackRules' => $track_rules,
'permanentRefRules' => $permanent_rules,
),
+ 'defaultBranch' => $default_branch,
+ 'description' => array(
+ 'raw' => (string)$this->getDetail('description'),
+ ),
);
}
@@ -2804,6 +2821,8 @@
return array(
id(new DiffusionRepositoryURIsSearchEngineAttachment())
->setAttachmentKey('uris'),
+ id(new DiffusionRepositoryMetricsSearchEngineAttachment())
+ ->setAttachmentKey('metrics'),
);
}

File Metadata

Mime Type
text/plain
Expires
Tue, Mar 18, 5:11 AM (3 d, 22 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7709432
Default Alt Text
D20862.id.diff (5 KB)

Event Timeline