Page MenuHomePhabricator

D12993.id31330.diff
No OneTemporary

D12993.id31330.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -331,7 +331,7 @@
'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => 'b1a59974',
'rsrc/js/application/aphlict/behavior-aphlict-status.js' => 'ea681761',
'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18',
- 'rsrc/js/application/calendar/behavior-day-view.js' => '28a60488',
+ 'rsrc/js/application/calendar/behavior-day-view.js' => '5c46cff2',
'rsrc/js/application/calendar/behavior-event-all-day.js' => '38dcf3c8',
'rsrc/js/application/config/behavior-reorder-fields.js' => '14a827de',
'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => '10246726',
@@ -554,7 +554,7 @@
'javelin-behavior-dashboard-move-panels' => '82439934',
'javelin-behavior-dashboard-query-panel-select' => '453c5375',
'javelin-behavior-dashboard-tab-panel' => 'd4eecc63',
- 'javelin-behavior-day-view' => '28a60488',
+ 'javelin-behavior-day-view' => '5c46cff2',
'javelin-behavior-device' => 'a205cf28',
'javelin-behavior-differential-add-reviewers-and-ccs' => 'e10f8e18',
'javelin-behavior-differential-comment-jump' => '4fdb476d',
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
@@ -1541,6 +1541,7 @@
'PhabricatorClusterConfigOptions' => 'applications/config/option/PhabricatorClusterConfigOptions.php',
'PhabricatorCommitBranchesField' => 'applications/repository/customfield/PhabricatorCommitBranchesField.php',
'PhabricatorCommitCustomField' => 'applications/repository/customfield/PhabricatorCommitCustomField.php',
+ 'PhabricatorCommitMergedCommitsField' => 'applications/repository/customfield/PhabricatorCommitMergedCommitsField.php',
'PhabricatorCommitSearchEngine' => 'applications/audit/query/PhabricatorCommitSearchEngine.php',
'PhabricatorCommitTagsField' => 'applications/repository/customfield/PhabricatorCommitTagsField.php',
'PhabricatorCommonPasswords' => 'applications/auth/constants/PhabricatorCommonPasswords.php',
@@ -4906,6 +4907,7 @@
'PhabricatorClusterConfigOptions' => 'PhabricatorApplicationConfigOptions',
'PhabricatorCommitBranchesField' => 'PhabricatorCommitCustomField',
'PhabricatorCommitCustomField' => 'PhabricatorCustomField',
+ 'PhabricatorCommitMergedCommitsField' => 'PhabricatorCommitCustomField',
'PhabricatorCommitSearchEngine' => 'PhabricatorApplicationSearchEngine',
'PhabricatorCommitTagsField' => 'PhabricatorCommitCustomField',
'PhabricatorCommonPasswords' => 'Phobject',
diff --git a/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php b/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php
--- a/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php
+++ b/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php
@@ -20,6 +20,21 @@
}
public function getOptions() {
+ $custom_field_type = 'custom:PhabricatorCustomFieldConfigOptionType';
+
+ $fields = array(
+ new PhabricatorCommitBranchesField(),
+ new PhabricatorCommitTagsField(),
+ new PhabricatorCommitMergedCommitsField(),
+ );
+
+ $default_fields = array();
+ foreach ($fields as $field) {
+ $default_fields[$field->getFieldKey()] = array(
+ 'disabled' => $field->shouldDisableByDefault(),
+ );
+ }
+
return array(
$this->newOption(
'metamta.diffusion.subject-prefix',
@@ -124,6 +139,13 @@
'from web traffic (for example, if you use different SSH and '.
'web load balancers), you can set the SSH hostname here. This '.
'is an advanced option.')),
+ $this->newOption('diffusion.fields', $custom_field_type, $default_fields)
+ ->setCustomData(
+ id(new PhabricatorRepositoryCommit())
+ ->getCustomFieldBaseClass())
+ ->setDescription(pht(
+ "Select and reorder diffusion fields.\n\n".
+ "These will primarily show up in Mail Notifications.")),
);
}
diff --git a/src/applications/repository/customfield/PhabricatorCommitMergedCommitsField.php b/src/applications/repository/customfield/PhabricatorCommitMergedCommitsField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/repository/customfield/PhabricatorCommitMergedCommitsField.php
@@ -0,0 +1,73 @@
+<?php
+
+final class PhabricatorCommitMergedCommitsField
+ extends PhabricatorCommitCustomField {
+
+ public function getFieldKey() {
+ return 'diffusion:mergedcommits';
+ }
+
+ public function shouldDisableByDefault() {
+ return true;
+ }
+
+ public function shouldAppearInTransactionMail() {
+ return true;
+ }
+
+ public function updateTransactionMailBody(
+ PhabricatorMetaMTAMailBody $body,
+ PhabricatorApplicationTransactionEditor $editor,
+ array $xactions) {
+
+ // Get all the merged commits if this commit is a merge
+ $merges_caption = '';
+ // TODO: Make this limit configurable after T6030
+ $limit = 50;
+ $commit = $this->getObject();
+
+ try {
+ $drequest = DiffusionRequest::newFromDictionary(
+ array(
+ 'user' => PhabricatorUser::getOmnipotentUser(),
+ 'initFromConduit' => false,
+ 'repository' => $commit->getRepository(),
+ 'commit' => $commit->getCommitIdentifier(),
+ ));
+
+ $merges = DiffusionPathChange::newFromConduit(
+ DiffusionQuery::callConduitWithDiffusionRequest(
+ PhabricatorUser::getOmnipotentUser(),
+ $drequest,
+ 'diffusion.mergedcommitsquery',
+ array(
+ 'commit' => $commit->getCommitIdentifier(),
+ 'limit' => $limit + 1,
+ )));
+
+ if (count($merges) > $limit) {
+ $merges = array_slice($merges, 0, $limit);
+ $merges_caption =
+ "This commit merges more than {$limit} changes. Only the first ".
+ "{$limit} are shown.\n";
+ }
+
+ if ($merges) {
+ for ($i = 0; $i < count($merges); $i++) {
+ $merges[$i] = $merges[$i]->getAuthorName().
+ ': '.
+ $merges[$i]->getSummary();
+ }
+ $body->addTextSection(
+ pht('MERGED COMMITS'),
+ $merges_caption.implode("\n", $merges));
+ }
+
+ } catch (ConduitException $ex) {
+ // Log the exception and continue.
+ phlog($ex);
+ }
+
+ }
+
+}
diff --git a/src/applications/repository/storage/PhabricatorRepositoryCommit.php b/src/applications/repository/storage/PhabricatorRepositoryCommit.php
--- a/src/applications/repository/storage/PhabricatorRepositoryCommit.php
+++ b/src/applications/repository/storage/PhabricatorRepositoryCommit.php
@@ -349,9 +349,7 @@
public function getCustomFieldSpecificationForRole($role) {
- // TODO: We could make this configurable eventually, but just use the
- // defaults for now.
- return array();
+ return PhabricatorEnv::getEnvConfig('diffusion.fields');
}
public function getCustomFieldBaseClass() {

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 1, 6:58 AM (3 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7226187
Default Alt Text
D12993.id31330.diff (6 KB)

Event Timeline