@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.

Clean up `hg --debug branches` calls

Summary: Ref T1493. Consolidate these a bit; they might need some more magic once we do `--noupdate` checkouts. Mostly just trying to clean up and centralize this code a bit.

Test Plan: Viewed and `bin/repository discover`'d Mercurial repos with and without any branches.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T1493

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

+38 -19
+2
src/__phutil_library_map__.php
··· 496 496 'DiffusionLintDetailsController' => 'applications/diffusion/controller/DiffusionLintDetailsController.php', 497 497 'DiffusionLintSaveRunner' => 'applications/diffusion/DiffusionLintSaveRunner.php', 498 498 'DiffusionLowLevelGitRefQuery' => 'applications/diffusion/query/lowlevel/DiffusionLowLevelGitRefQuery.php', 499 + 'DiffusionLowLevelMercurialBranchesQuery' => 'applications/diffusion/query/lowlevel/DiffusionLowLevelMercurialBranchesQuery.php', 499 500 'DiffusionLowLevelQuery' => 'applications/diffusion/query/lowlevel/DiffusionLowLevelQuery.php', 500 501 'DiffusionMercurialCommitParentsQuery' => 'applications/diffusion/query/parents/DiffusionMercurialCommitParentsQuery.php', 501 502 'DiffusionMercurialExpandShortNameQuery' => 'applications/diffusion/query/expandshortname/DiffusionMercurialExpandShortNameQuery.php', ··· 2701 2702 'DiffusionLintController' => 'DiffusionController', 2702 2703 'DiffusionLintDetailsController' => 'DiffusionController', 2703 2704 'DiffusionLowLevelGitRefQuery' => 'DiffusionLowLevelQuery', 2705 + 'DiffusionLowLevelMercurialBranchesQuery' => 'DiffusionLowLevelQuery', 2704 2706 'DiffusionLowLevelQuery' => 'Phobject', 2705 2707 'DiffusionMercurialCommitParentsQuery' => 'DiffusionCommitParentsQuery', 2706 2708 'DiffusionMercurialExpandShortNameQuery' => 'DiffusionExpandShortNameQuery',
+4 -12
src/applications/diffusion/conduit/ConduitAPI_diffusion_branchquery_Method.php
··· 65 65 $offset = $request->getValue('offset'); 66 66 $limit = $request->getValue('limit'); 67 67 68 - list($stdout) = $repository->execxLocalCommand( 69 - '--debug branches'); 70 - $branch_info = ArcanistMercurialParser::parseMercurialBranches($stdout); 71 - 72 - $branches = array(); 73 - foreach ($branch_info as $name => $info) { 74 - $branch = new DiffusionBranchInformation(); 75 - $branch->setName($name); 76 - $branch->setHeadCommitIdentifier($info['rev']); 77 - $branches[] = $branch->toDictionary(); 78 - } 68 + $branches = id(new DiffusionLowLevelMercurialBranchesQuery()) 69 + ->setRepository($repository) 70 + ->execute(); 79 71 80 72 if ($offset) { 81 73 $branches = array_slice($branches, $offset); ··· 85 77 $branches = array_slice($branches, 0, $limit); 86 78 } 87 79 88 - return $branches; 80 + return mpull($branches, 'toDictionary'); 89 81 } 90 82 }
+28
src/applications/diffusion/query/lowlevel/DiffusionLowLevelMercurialBranchesQuery.php
··· 1 + <?php 2 + 3 + /** 4 + * Execute and parse a low-level Mercurial branches query using `hg branches`. 5 + */ 6 + final class DiffusionLowLevelMercurialBranchesQuery 7 + extends DiffusionLowLevelQuery { 8 + 9 + protected function executeQuery() { 10 + $repository = $this->getRepository(); 11 + 12 + // NOTE: `--debug` gives us 40-character hashes. 13 + list($stdout) = $repository->execxLocalCommand( 14 + '--debug branches'); 15 + 16 + $branches = array(); 17 + 18 + $lines = ArcanistMercurialParser::parseMercurialBranches($stdout); 19 + foreach ($lines as $name => $spec) { 20 + $branches[] = id(new DiffusionBranchInformation()) 21 + ->setName($name) 22 + ->setHeadCommitIdentifier($spec['rev']); 23 + } 24 + 25 + return $branches; 26 + } 27 + 28 + }
+4 -7
src/applications/repository/daemon/PhabricatorRepositoryPullLocalDaemon.php
··· 743 743 744 744 745 745 private function executeHgDiscover(PhabricatorRepository $repository) { 746 - // NOTE: "--debug" gives us 40-character hashes. 747 - list($stdout) = $repository->execxLocalCommand('--debug branches'); 748 746 749 - if (!trim($stdout)) { 750 - // No branches; likely a newly initialized repository. 751 - return false; 752 - } 747 + $branches = id(new DiffusionLowLevelMercurialBranchesQuery()) 748 + ->setRepository($repository) 749 + ->execute(); 750 + $branches = mpull($branches, 'getHeadCommitIdentifier', 'getName'); 753 751 754 - $branches = ArcanistMercurialParser::parseMercurialBranches($stdout); 755 752 $got_something = false; 756 753 foreach ($branches as $name => $branch) { 757 754 $commit = $branch['rev'];