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

Use DiffQuery instead of direct hunk loads in MessageParser daemon

Summary: Ref T5179. Ref T4045. Continue reducing the number of direct hunk loads we perform.

Test Plan: Pushed a closing commit, used `scripts/repository/reparse.php --message ...` to trigger this logic, got a sensible/accurate result.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T4045, T5179

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

+15 -13
+15 -13
src/applications/repository/worker/commitmessageparser/PhabricatorRepositoryCommitMessageParserWorker.php
··· 294 294 295 295 $repository = $this->repository; 296 296 297 + $vs_diff = id(new DifferentialDiffQuery()) 298 + ->setViewer(PhabricatorUser::getOmnipotentUser()) 299 + ->withRevisionIDs(array($revision->getID())) 300 + ->needChangesets(true) 301 + ->setLimit(1) 302 + ->executeOne(); 303 + if (!$vs_diff) { 304 + return null; 305 + } 306 + 307 + if ($vs_diff->getCreationMethod() == 'commit') { 308 + return null; 309 + } 310 + 297 311 $vs_changesets = array(); 298 - $vs_diff = id(new DifferentialDiff())->loadOneWhere( 299 - 'revisionID = %d AND creationMethod != %s ORDER BY id DESC LIMIT 1', 300 - $revision->getID(), 301 - 'commit'); 302 - foreach ($vs_diff->loadChangesets() as $changeset) { 312 + foreach ($vs_diff->getChangesets() as $changeset) { 303 313 $path = $changeset->getAbsoluteRepositoryPath($repository, $vs_diff); 304 314 $path = ltrim($path, '/'); 305 315 $vs_changesets[$path] = $changeset; ··· 315 325 if (array_fill_keys(array_keys($changesets), true) != 316 326 array_fill_keys(array_keys($vs_changesets), true)) { 317 327 return $vs_diff; 318 - } 319 - 320 - $hunks = id(new DifferentialHunk())->loadAllWhere( 321 - 'changesetID IN (%Ld)', 322 - mpull($vs_changesets, 'getID')); 323 - $hunks = mgroup($hunks, 'getChangesetID'); 324 - foreach ($vs_changesets as $changeset) { 325 - $changeset->attachHunks(idx($hunks, $changeset->getID(), array())); 326 328 } 327 329 328 330 $file_phids = array();