Differential D16131 Diff 38815 src/applications/repository/worker/commitchangeparser/PhabricatorRepositoryCommitChangeParserWorker.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/repository/worker/commitchangeparser/PhabricatorRepositoryCommitChangeParserWorker.php
<?php | <?php | ||||
abstract class PhabricatorRepositoryCommitChangeParserWorker | abstract class PhabricatorRepositoryCommitChangeParserWorker | ||||
extends PhabricatorRepositoryCommitParserWorker { | extends PhabricatorRepositoryCommitParserWorker { | ||||
protected function getImportStepFlag() { | |||||
return PhabricatorRepositoryCommit::IMPORTED_CHANGE; | |||||
} | |||||
public function getRequiredLeaseTime() { | public function getRequiredLeaseTime() { | ||||
// It can take a very long time to parse commits; some commits in the | // It can take a very long time to parse commits; some commits in the | ||||
// Facebook repository affect many millions of paths. Acquire 24h leases. | // Facebook repository affect many millions of paths. Acquire 24h leases. | ||||
return phutil_units('24 hours in seconds'); | return phutil_units('24 hours in seconds'); | ||||
} | } | ||||
abstract protected function parseCommitChanges( | abstract protected function parseCommitChanges( | ||||
PhabricatorRepository $repository, | PhabricatorRepository $repository, | ||||
PhabricatorRepositoryCommit $commit); | PhabricatorRepositoryCommit $commit); | ||||
protected function parseCommit( | protected function parseCommit( | ||||
PhabricatorRepository $repository, | PhabricatorRepository $repository, | ||||
PhabricatorRepositoryCommit $commit) { | PhabricatorRepositoryCommit $commit) { | ||||
$this->log("%s\n", pht('Parsing "%s"...', $commit->getMonogram())); | $this->log("%s\n", pht('Parsing "%s"...', $commit->getMonogram())); | ||||
if ($this->isBadCommit($commit)) { | if ($this->isBadCommit($commit)) { | ||||
$this->log(pht('This commit is marked bad!')); | $this->log(pht('This commit is marked bad!')); | ||||
return; | return; | ||||
} | } | ||||
if (!$this->shouldSkipImportStep()) { | |||||
$results = $this->parseCommitChanges($repository, $commit); | $results = $this->parseCommitChanges($repository, $commit); | ||||
if ($results) { | if ($results) { | ||||
$this->writeCommitChanges($repository, $commit, $results); | $this->writeCommitChanges($repository, $commit, $results); | ||||
} | } | ||||
$commit->writeImportStatusFlag($this->getImportStepFlag()); | |||||
PhabricatorSearchWorker::queueDocumentForIndexing($commit->getPHID()); | |||||
} | |||||
$this->finishParse(); | $this->finishParse(); | ||||
} | } | ||||
public function parseChangesForUnitTest( | public function parseChangesForUnitTest( | ||||
PhabricatorRepository $repository, | PhabricatorRepository $repository, | ||||
PhabricatorRepositoryCommit $commit) { | PhabricatorRepositoryCommit $commit) { | ||||
return $this->parseCommitChanges($repository, $commit); | return $this->parseCommitChanges($repository, $commit); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | foreach (array_chunk($paths, 128) as $path_chunk) { | ||||
$result_map[$row['path']] = $row['id']; | $result_map[$row['path']] = $row['id']; | ||||
} | } | ||||
} | } | ||||
return $result_map; | return $result_map; | ||||
} | } | ||||
protected function finishParse() { | protected function finishParse() { | ||||
$commit = $this->commit; | $commit = $this->commit; | ||||
$commit->writeImportStatusFlag( | |||||
PhabricatorRepositoryCommit::IMPORTED_CHANGE); | |||||
PhabricatorSearchWorker::queueDocumentForIndexing($commit->getPHID()); | |||||
if ($this->shouldQueueFollowupTasks()) { | if ($this->shouldQueueFollowupTasks()) { | ||||
$this->queueTask( | $this->queueTask( | ||||
'PhabricatorRepositoryCommitOwnersWorker', | 'PhabricatorRepositoryCommitOwnersWorker', | ||||
array( | array( | ||||
'commitID' => $commit->getID(), | 'commitID' => $commit->getID(), | ||||
)); | )); | ||||
} | } | ||||
} | } | ||||
▲ Show 20 Lines • Show All 50 Lines • Show Last 20 Lines |