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/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,68 @@ +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); + } + + } + +}