@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Diffusion - move commit branches query to conduit

Summary: Ref T2784.

Test Plan: loaded up a mercurial and a git commit. verified branches showed up correctly in object detail panel

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, Korvin

Maniphest Tasks: T2784

Differential Revision: https://secure.phabricator.com/D5958

+57 -70
+2 -8
src/__phutil_library_map__.php
··· 147 147 'ConduitAPI_diffusion_abstractquery_Method' => 'applications/diffusion/conduit/ConduitAPI_diffusion_abstractquery_Method.php', 148 148 'ConduitAPI_diffusion_branchquery_Method' => 'applications/diffusion/conduit/ConduitAPI_diffusion_branchquery_Method.php', 149 149 'ConduitAPI_diffusion_browsequery_Method' => 'applications/diffusion/conduit/ConduitAPI_diffusion_browsequery_Method.php', 150 + 'ConduitAPI_diffusion_commitbranchesquery_Method' => 'applications/diffusion/conduit/ConduitAPI_diffusion_commitbranchesquery_Method.php', 150 151 'ConduitAPI_diffusion_diffquery_Method' => 'applications/diffusion/conduit/ConduitAPI_diffusion_diffquery_Method.php', 151 152 'ConduitAPI_diffusion_existsquery_Method' => 'applications/diffusion/conduit/ConduitAPI_diffusion_existsquery_Method.php', 152 153 'ConduitAPI_diffusion_expandshortcommitquery_Method' => 'applications/diffusion/conduit/ConduitAPI_diffusion_expandshortcommitquery_Method.php', ··· 429 430 'DiffusionCommitParentsQuery' => 'applications/diffusion/query/parents/DiffusionCommitParentsQuery.php', 430 431 'DiffusionCommitQuery' => 'applications/diffusion/query/DiffusionCommitQuery.php', 431 432 'DiffusionCommitTagsController' => 'applications/diffusion/controller/DiffusionCommitTagsController.php', 432 - 'DiffusionContainsQuery' => 'applications/diffusion/query/contains/DiffusionContainsQuery.php', 433 433 'DiffusionController' => 'applications/diffusion/controller/DiffusionController.php', 434 434 'DiffusionDiffController' => 'applications/diffusion/controller/DiffusionDiffController.php', 435 435 'DiffusionEmptyResultView' => 'applications/diffusion/view/DiffusionEmptyResultView.php', ··· 441 441 'DiffusionGitBranch' => 'applications/diffusion/data/DiffusionGitBranch.php', 442 442 'DiffusionGitBranchTestCase' => 'applications/diffusion/data/__tests__/DiffusionGitBranchTestCase.php', 443 443 'DiffusionGitCommitParentsQuery' => 'applications/diffusion/query/parents/DiffusionGitCommitParentsQuery.php', 444 - 'DiffusionGitContainsQuery' => 'applications/diffusion/query/contains/DiffusionGitContainsQuery.php', 445 444 'DiffusionGitExpandShortNameQuery' => 'applications/diffusion/query/expandshortname/DiffusionGitExpandShortNameQuery.php', 446 445 'DiffusionGitFileContentQuery' => 'applications/diffusion/query/filecontent/DiffusionGitFileContentQuery.php', 447 446 'DiffusionGitHistoryQuery' => 'applications/diffusion/query/history/DiffusionGitHistoryQuery.php', ··· 461 460 'DiffusionLintDetailsController' => 'applications/diffusion/controller/DiffusionLintDetailsController.php', 462 461 'DiffusionLintSaveRunner' => 'applications/diffusion/DiffusionLintSaveRunner.php', 463 462 'DiffusionMercurialCommitParentsQuery' => 'applications/diffusion/query/parents/DiffusionMercurialCommitParentsQuery.php', 464 - 'DiffusionMercurialContainsQuery' => 'applications/diffusion/query/contains/DiffusionMercurialContainsQuery.php', 465 463 'DiffusionMercurialExpandShortNameQuery' => 'applications/diffusion/query/expandshortname/DiffusionMercurialExpandShortNameQuery.php', 466 464 'DiffusionMercurialFileContentQuery' => 'applications/diffusion/query/filecontent/DiffusionMercurialFileContentQuery.php', 467 465 'DiffusionMercurialHistoryQuery' => 'applications/diffusion/query/history/DiffusionMercurialHistoryQuery.php', ··· 489 487 'DiffusionSetupException' => 'applications/diffusion/exception/DiffusionSetupException.php', 490 488 'DiffusionStableCommitNameQuery' => 'applications/diffusion/query/stablecommitname/DiffusionStableCommitNameQuery.php', 491 489 'DiffusionSvnCommitParentsQuery' => 'applications/diffusion/query/parents/DiffusionSvnCommitParentsQuery.php', 492 - 'DiffusionSvnContainsQuery' => 'applications/diffusion/query/contains/DiffusionSvnContainsQuery.php', 493 490 'DiffusionSvnFileContentQuery' => 'applications/diffusion/query/filecontent/DiffusionSvnFileContentQuery.php', 494 491 'DiffusionSvnHistoryQuery' => 'applications/diffusion/query/history/DiffusionSvnHistoryQuery.php', 495 492 'DiffusionSvnMergedCommitsQuery' => 'applications/diffusion/query/mergedcommits/DiffusionSvnMergedCommitsQuery.php', ··· 1952 1949 'ConduitAPI_diffusion_abstractquery_Method' => 'ConduitAPI_diffusion_Method', 1953 1950 'ConduitAPI_diffusion_branchquery_Method' => 'ConduitAPI_diffusion_abstractquery_Method', 1954 1951 'ConduitAPI_diffusion_browsequery_Method' => 'ConduitAPI_diffusion_abstractquery_Method', 1952 + 'ConduitAPI_diffusion_commitbranchesquery_Method' => 'ConduitAPI_diffusion_abstractquery_Method', 1955 1953 'ConduitAPI_diffusion_diffquery_Method' => 'ConduitAPI_diffusion_abstractquery_Method', 1956 1954 'ConduitAPI_diffusion_existsquery_Method' => 'ConduitAPI_diffusion_abstractquery_Method', 1957 1955 'ConduitAPI_diffusion_expandshortcommitquery_Method' => 'ConduitAPI_diffusion_abstractquery_Method', ··· 2224 2222 'DiffusionCommitParentsQuery' => 'DiffusionQuery', 2225 2223 'DiffusionCommitQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 2226 2224 'DiffusionCommitTagsController' => 'DiffusionController', 2227 - 'DiffusionContainsQuery' => 'DiffusionQuery', 2228 2225 'DiffusionController' => 'PhabricatorController', 2229 2226 'DiffusionDiffController' => 'DiffusionController', 2230 2227 'DiffusionEmptyResultView' => 'DiffusionView', ··· 2234 2231 'DiffusionFileContentQuery' => 'DiffusionQuery', 2235 2232 'DiffusionGitBranchTestCase' => 'PhabricatorTestCase', 2236 2233 'DiffusionGitCommitParentsQuery' => 'DiffusionCommitParentsQuery', 2237 - 'DiffusionGitContainsQuery' => 'DiffusionContainsQuery', 2238 2234 'DiffusionGitExpandShortNameQuery' => 'DiffusionExpandShortNameQuery', 2239 2235 'DiffusionGitFileContentQuery' => 'DiffusionFileContentQuery', 2240 2236 'DiffusionGitHistoryQuery' => 'DiffusionHistoryQuery', ··· 2253 2249 'DiffusionLintController' => 'DiffusionController', 2254 2250 'DiffusionLintDetailsController' => 'DiffusionController', 2255 2251 'DiffusionMercurialCommitParentsQuery' => 'DiffusionCommitParentsQuery', 2256 - 'DiffusionMercurialContainsQuery' => 'DiffusionContainsQuery', 2257 2252 'DiffusionMercurialExpandShortNameQuery' => 'DiffusionExpandShortNameQuery', 2258 2253 'DiffusionMercurialFileContentQuery' => 'DiffusionFileContentQuery', 2259 2254 'DiffusionMercurialHistoryQuery' => 'DiffusionHistoryQuery', ··· 2273 2268 'DiffusionSetupException' => 'AphrontUsageException', 2274 2269 'DiffusionStableCommitNameQuery' => 'DiffusionQuery', 2275 2270 'DiffusionSvnCommitParentsQuery' => 'DiffusionCommitParentsQuery', 2276 - 'DiffusionSvnContainsQuery' => 'DiffusionContainsQuery', 2277 2271 'DiffusionSvnFileContentQuery' => 'DiffusionFileContentQuery', 2278 2272 'DiffusionSvnHistoryQuery' => 'DiffusionHistoryQuery', 2279 2273 'DiffusionSvnMergedCommitsQuery' => 'DiffusionMergedCommitsQuery',
+52
src/applications/diffusion/conduit/ConduitAPI_diffusion_commitbranchesquery_Method.php
··· 1 + <?php 2 + 3 + /** 4 + * @group conduit 5 + */ 6 + final class ConduitAPI_diffusion_commitbranchesquery_Method 7 + extends ConduitAPI_diffusion_abstractquery_Method { 8 + 9 + public function getMethodDescription() { 10 + return 'Determine what branches contain a commit in a repository.'; 11 + } 12 + 13 + public function defineReturnType() { 14 + return 'array'; 15 + } 16 + 17 + protected function defineCustomParamTypes() { 18 + return array( 19 + 'commit' => 'required string', 20 + ); 21 + } 22 + 23 + protected function getGitResult(ConduitAPIRequest $request) { 24 + $drequest = $this->getDiffusionRequest(); 25 + $repository = $drequest->getRepository(); 26 + $commit = $request->getValue('commit'); 27 + 28 + list($contains) = $repository->execxLocalCommand( 29 + 'branch -r --verbose --no-abbrev --contains %s', 30 + $commit); 31 + 32 + return DiffusionGitBranch::parseRemoteBranchOutput( 33 + $contains, 34 + DiffusionBranchInformation::DEFAULT_GIT_REMOTE); 35 + } 36 + 37 + protected function getMercurialResult(ConduitAPIRequest $request) { 38 + $drequest = $this->getDiffusionRequest(); 39 + $repository = $drequest->getRepository(); 40 + $commit = $request->getValue('commit'); 41 + 42 + list($contains) = $repository->execxLocalCommand( 43 + 'log --template %s --limit 1 --rev %s --', 44 + '{branch}', 45 + $commit); 46 + 47 + return array( 48 + trim($contains) => $commit, 49 + ); 50 + 51 + } 52 + }
+3 -2
src/applications/diffusion/controller/DiffusionCommitBranchesController.php
··· 10 10 public function processRequest() { 11 11 $request = $this->getDiffusionRequest(); 12 12 13 - $branch_query = DiffusionContainsQuery::newFromDiffusionRequest($request); 14 - $branches = $branch_query->loadContainingBranches(); 13 + $branches = $this->callConduitWithDiffusionRequest( 14 + 'diffusion.commitbranchesquery', 15 + array('commit' => $request->getCommit())); 15 16 16 17 $branch_links = array(); 17 18 foreach ($branches as $branch => $commit) {
-14
src/applications/diffusion/query/contains/DiffusionContainsQuery.php
··· 1 - <?php 2 - 3 - abstract class DiffusionContainsQuery extends DiffusionQuery { 4 - 5 - final public static function newFromDiffusionRequest( 6 - DiffusionRequest $request) { 7 - return self::newQueryObject(__CLASS__, $request); 8 - } 9 - 10 - final public function loadContainingBranches() { 11 - return $this->executeQuery(); 12 - } 13 - 14 - }
-18
src/applications/diffusion/query/contains/DiffusionGitContainsQuery.php
··· 1 - <?php 2 - 3 - final class DiffusionGitContainsQuery extends DiffusionContainsQuery { 4 - 5 - final public function executeQuery() { 6 - $request = $this->getRequest(); 7 - $repository = $request->getRepository(); 8 - 9 - list($contains) = $repository->execxLocalCommand( 10 - 'branch -r --verbose --no-abbrev --contains %s', 11 - $request->getCommit()); 12 - 13 - return DiffusionGitBranch::parseRemoteBranchOutput( 14 - $contains, 15 - DiffusionBranchInformation::DEFAULT_GIT_REMOTE); 16 - } 17 - 18 - }
-18
src/applications/diffusion/query/contains/DiffusionMercurialContainsQuery.php
··· 1 - <?php 2 - 3 - final class DiffusionMercurialContainsQuery extends DiffusionContainsQuery { 4 - 5 - protected function executeQuery() { 6 - $request = $this->getRequest(); 7 - $repository = $request->getRepository(); 8 - list($contains) = $repository->execxLocalCommand( 9 - 'log --template %s --limit 1 --rev %s --', 10 - '{branch}', 11 - $request->getCommit()); 12 - 13 - return array( 14 - trim($contains) => $request->getCommit(), 15 - ); 16 - } 17 - 18 - }
-10
src/applications/diffusion/query/contains/DiffusionSvnContainsQuery.php
··· 1 - <?php 2 - 3 - final class DiffusionSvnContainsQuery extends DiffusionContainsQuery { 4 - 5 - protected function executeQuery() { 6 - // NOTE: Subversion doesn't have branches, so we always return empty. 7 - return array(); 8 - } 9 - 10 - }