Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15423238
D20467.id48843.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
28 KB
Referenced Files
None
Subscribers
None
D20467.id48843.diff
View Options
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
@@ -4337,12 +4337,11 @@
'PhabricatorRepositoryCommit' => 'applications/repository/storage/PhabricatorRepositoryCommit.php',
'PhabricatorRepositoryCommitChangeParserWorker' => 'applications/repository/worker/commitchangeparser/PhabricatorRepositoryCommitChangeParserWorker.php',
'PhabricatorRepositoryCommitData' => 'applications/repository/storage/PhabricatorRepositoryCommitData.php',
- 'PhabricatorRepositoryCommitHeraldWorker' => 'applications/repository/worker/PhabricatorRepositoryCommitHeraldWorker.php',
'PhabricatorRepositoryCommitHint' => 'applications/repository/storage/PhabricatorRepositoryCommitHint.php',
'PhabricatorRepositoryCommitMessageParserWorker' => 'applications/repository/worker/commitmessageparser/PhabricatorRepositoryCommitMessageParserWorker.php',
- 'PhabricatorRepositoryCommitOwnersWorker' => 'applications/repository/worker/PhabricatorRepositoryCommitOwnersWorker.php',
'PhabricatorRepositoryCommitPHIDType' => 'applications/repository/phid/PhabricatorRepositoryCommitPHIDType.php',
'PhabricatorRepositoryCommitParserWorker' => 'applications/repository/worker/PhabricatorRepositoryCommitParserWorker.php',
+ 'PhabricatorRepositoryCommitPublishWorker' => 'applications/repository/worker/PhabricatorRepositoryCommitPublishWorker.php',
'PhabricatorRepositoryCommitRef' => 'applications/repository/engine/PhabricatorRepositoryCommitRef.php',
'PhabricatorRepositoryCommitTestCase' => 'applications/repository/storage/__tests__/PhabricatorRepositoryCommitTestCase.php',
'PhabricatorRepositoryConfigOptions' => 'applications/repository/config/PhabricatorRepositoryConfigOptions.php',
@@ -10606,15 +10605,14 @@
),
'PhabricatorRepositoryCommitChangeParserWorker' => 'PhabricatorRepositoryCommitParserWorker',
'PhabricatorRepositoryCommitData' => 'PhabricatorRepositoryDAO',
- 'PhabricatorRepositoryCommitHeraldWorker' => 'PhabricatorRepositoryCommitParserWorker',
'PhabricatorRepositoryCommitHint' => array(
'PhabricatorRepositoryDAO',
'PhabricatorPolicyInterface',
),
'PhabricatorRepositoryCommitMessageParserWorker' => 'PhabricatorRepositoryCommitParserWorker',
- 'PhabricatorRepositoryCommitOwnersWorker' => 'PhabricatorRepositoryCommitParserWorker',
'PhabricatorRepositoryCommitPHIDType' => 'PhabricatorPHIDType',
'PhabricatorRepositoryCommitParserWorker' => 'PhabricatorWorker',
+ 'PhabricatorRepositoryCommitPublishWorker' => 'PhabricatorRepositoryCommitParserWorker',
'PhabricatorRepositoryCommitRef' => 'Phobject',
'PhabricatorRepositoryCommitTestCase' => 'PhabricatorTestCase',
'PhabricatorRepositoryConfigOptions' => 'PhabricatorApplicationConfigOptions',
diff --git a/src/applications/audit/editor/PhabricatorAuditEditor.php b/src/applications/audit/editor/PhabricatorAuditEditor.php
--- a/src/applications/audit/editor/PhabricatorAuditEditor.php
+++ b/src/applications/audit/editor/PhabricatorAuditEditor.php
@@ -184,7 +184,7 @@
foreach ($xactions as $xaction) {
switch ($xaction->getTransactionType()) {
case PhabricatorAuditTransaction::TYPE_COMMIT:
- $import_status_flag = PhabricatorRepositoryCommit::IMPORTED_HERALD;
+ $import_status_flag = PhabricatorRepositoryCommit::IMPORTED_PUBLISH;
break;
}
}
diff --git a/src/applications/repository/management/PhabricatorRepositoryManagementImportingWorkflow.php b/src/applications/repository/management/PhabricatorRepositoryManagementImportingWorkflow.php
--- a/src/applications/repository/management/PhabricatorRepositoryManagementImportingWorkflow.php
+++ b/src/applications/repository/management/PhabricatorRepositoryManagementImportingWorkflow.php
@@ -67,11 +67,8 @@
if (!($status & PhabricatorRepositoryCommit::IMPORTED_CHANGE)) {
$need[] = pht('Change');
}
- if (!($status & PhabricatorRepositoryCommit::IMPORTED_OWNERS)) {
- $need[] = pht('Owners');
- }
- if (!($status & PhabricatorRepositoryCommit::IMPORTED_HERALD)) {
- $need[] = pht('Herald');
+ if (!($status & PhabricatorRepositoryCommit::IMPORTED_PUBLISH)) {
+ $need[] = pht('Publish');
}
$console->writeOut(' %s', implode(', ', $need));
diff --git a/src/applications/repository/management/PhabricatorRepositoryManagementReparseWorkflow.php b/src/applications/repository/management/PhabricatorRepositoryManagementReparseWorkflow.php
--- a/src/applications/repository/management/PhabricatorRepositoryManagementReparseWorkflow.php
+++ b/src/applications/repository/management/PhabricatorRepositoryManagementReparseWorkflow.php
@@ -12,14 +12,12 @@
'**reparse** __what__ __which_parts__ [--trace] [--force]'."\n\n".
'Rerun the Diffusion parser on specific commits and repositories. '.
'Mostly useful for debugging changes to Diffusion.'."\n\n".
- 'e.g. enqueue reparse owners in the TEST repo for all commits:'."\n".
- 'repository reparse --all TEST --owners'."\n\n".
'e.g. do same but exclude before yesterday (local time):'."\n".
- 'repository reparse --all TEST --owners --min-date yesterday'."\n".
- 'repository reparse --all TEST --owners --min-date "today -1 day".'.
+ 'repository reparse --all TEST --change --min-date yesterday'."\n".
+ 'repository reparse --all TEST --change --min-date "today -1 day".'.
"\n\n".
'e.g. do same but exclude before 03/31/2013 (local time):'."\n".
- 'repository reparse --all TEST --owners --min-date "03/31/2013"'))
+ 'repository reparse --all TEST --change --min-date "03/31/2013"'))
->setArguments(
array(
array(
@@ -30,11 +28,7 @@
'name' => 'all',
'param' => 'repository',
'help' => pht(
- 'Reparse all commits in the specified repository. This mode '.
- 'queues parsers into the task queue; you must run taskmasters '.
- 'to actually do the parses. Use with __%s__ to run '.
- 'the tasks locally instead of with taskmasters.',
- '--force-local'),
+ 'Reparse all commits in the specified repository.'),
),
array(
'name' => 'min-date',
@@ -57,19 +51,13 @@
),
array(
'name' => 'change',
- 'help' => pht('Reparse changes.'),
+ 'help' => pht('Reparse source changes.'),
),
array(
- 'name' => 'herald',
+ 'name' => 'publish',
'help' => pht(
- 'Reevaluate Herald rules (may send huge amounts of email!)'),
- ),
- array(
- 'name' => 'owners',
- 'help' => pht(
- 'Reevaluate related commits for owners packages (may delete '.
- 'existing relationship entries between your package and some '.
- 'old commits!)'),
+ 'Publish changes: send email, publish Feed stories, run '.
+ 'Herald rules, etc.'),
),
array(
'name' => 'force',
@@ -77,16 +65,14 @@
'help' => pht('Act noninteractively, without prompting.'),
),
array(
- 'name' => 'force-local',
+ 'name' => 'background',
'help' => pht(
- 'Only used with __%s__, use this to run the tasks locally '.
- 'instead of deferring them to taskmaster daemons.',
- '--all'),
+ 'Queue tasks for the daemons instead of running them in the '.
+ 'foreground.'),
),
array(
'name' => 'importing',
- 'help' => pht(
- 'Reparse all steps which have not yet completed.'),
+ 'help' => pht('Reparse all steps which have not yet completed.'),
),
));
@@ -98,11 +84,10 @@
$all_from_repo = $args->getArg('all');
$reparse_message = $args->getArg('message');
$reparse_change = $args->getArg('change');
- $reparse_herald = $args->getArg('herald');
- $reparse_owners = $args->getArg('owners');
+ $reparse_publish = $args->getArg('publish');
$reparse_what = $args->getArg('revision');
$force = $args->getArg('force');
- $force_local = $args->getArg('force-local');
+ $background = $args->getArg('background');
$min_date = $args->getArg('min-date');
$importing = $args->getArg('importing');
@@ -122,17 +107,13 @@
$commits));
}
- $any_step = ($reparse_message ||
- $reparse_change ||
- $reparse_herald ||
- $reparse_owners);
+ $any_step = ($reparse_message || $reparse_change || $reparse_publish);
if ($any_step && $importing) {
throw new PhutilArgumentUsageException(
pht(
- 'Choosing steps with %s conflicts with flags which select '.
- 'specific steps.',
- '--importing'));
+ 'Choosing steps with "--importing" conflicts with flags which '.
+ 'select specific steps.'));
} else if ($any_step) {
// OK.
} else if ($importing) {
@@ -140,12 +121,8 @@
} else if (!$any_step && !$importing) {
throw new PhutilArgumentUsageException(
pht(
- 'Specify which steps to reparse with %s, or %s, %s, %s, or %s.',
- '--importing',
- '--message',
- '--change',
- '--herald',
- '--owners'));
+ 'Specify which steps to reparse with "--message", "--change", '.
+ 'and/or "--publish"; or "--importing" to run all missing steps.'));
}
$min_timestamp = false;
@@ -155,9 +132,7 @@
if (!$all_from_repo) {
throw new PhutilArgumentUsageException(
pht(
- "You must use --all if you specify --min-date\n".
- "e.g.\n".
- " repository reparse --all TEST --owners --min-date yesterday"));
+ 'You must use "--all" if you specify "--min-date".'));
}
// previous to PHP 5.1.0 you would compare with -1, instead of false
@@ -170,19 +145,6 @@
}
}
- if ($reparse_owners && !$force) {
- $console->writeOut(
- "%s\n",
- pht(
- 'You are about to recreate the relationship entries between the '.
- 'commits and the packages they touch. This might delete some '.
- 'existing relationship entries for some old commits.'));
-
- if (!phutil_console_confirm(pht('Are you ready to continue?'))) {
- throw new PhutilArgumentUsageException(pht('Cancelled.'));
- }
- }
-
$commits = array();
if ($all_from_repo) {
$repository = id(new PhabricatorRepositoryQuery())
@@ -219,14 +181,8 @@
$commits = $this->loadNamedCommits($reparse_what);
}
- if ($all_from_repo && !$force_local) {
- $console->writeOut("%s\n", pht(
- "**NOTE**: This script will queue tasks to reparse the data. Once the ".
- "tasks have been queued, you need to run Taskmaster daemons to ".
- "execute them.\n\n%s",
- pht(
- 'QUEUEING TASKS (%s Commit(s)):',
- phutil_count($commits))));
+ if (!$background) {
+ PhabricatorWorker::setRunAllTasksInProcess(true);
}
$progress = new PhutilConsoleProgressBar();
@@ -241,16 +197,13 @@
// Find the first missing import step and queue that up.
$reparse_message = false;
$reparse_change = false;
- $reparse_owners = false;
- $reparse_herald = false;
+ $reparse_publish = false;
if (!($status & PhabricatorRepositoryCommit::IMPORTED_MESSAGE)) {
$reparse_message = true;
} else if (!($status & PhabricatorRepositoryCommit::IMPORTED_CHANGE)) {
$reparse_change = true;
- } else if (!($status & PhabricatorRepositoryCommit::IMPORTED_OWNERS)) {
- $reparse_owners = true;
- } else if (!($status & PhabricatorRepositoryCommit::IMPORTED_HERALD)) {
- $reparse_herald = true;
+ } else if (!($status & PhabricatorRepositoryCommit::IMPORTED_PUBLISH)) {
+ $reparse_publish = true;
} else {
continue;
}
@@ -285,12 +238,8 @@
break;
}
- if ($reparse_herald) {
- $classes[] = 'PhabricatorRepositoryCommitHeraldWorker';
- }
-
- if ($reparse_owners) {
- $classes[] = 'PhabricatorRepositoryCommitOwnersWorker';
+ if ($reparse_publish) {
+ $classes[] = 'PhabricatorRepositoryCommitPublishWorker';
}
// NOTE: With "--importing", we queue the first unparsed step and let
@@ -298,20 +247,10 @@
// all the requested steps explicitly.
$spec = array(
- 'commitID' => $commit->getID(),
- 'only' => !$importing,
+ 'commitID' => $commit->getID(),
+ 'only' => !$importing,
);
- if ($all_from_repo && !$force_local) {
- $background = true;
- } else {
- $background = false;
- }
-
- if (!$background) {
- PhabricatorWorker::setRunAllTasksInProcess(true);
- }
-
foreach ($classes as $class) {
PhabricatorWorker::scheduleTask(
$class,
diff --git a/src/applications/repository/storage/PhabricatorRepository.php b/src/applications/repository/storage/PhabricatorRepository.php
--- a/src/applications/repository/storage/PhabricatorRepository.php
+++ b/src/applications/repository/storage/PhabricatorRepository.php
@@ -1003,7 +1003,7 @@
$done = 0;
$total = 0;
foreach ($progress as $row) {
- $total += $row['N'] * 4;
+ $total += $row['N'] * 3;
$status = $row['importStatus'];
if ($status & PhabricatorRepositoryCommit::IMPORTED_MESSAGE) {
$done += $row['N'];
@@ -1011,10 +1011,7 @@
if ($status & PhabricatorRepositoryCommit::IMPORTED_CHANGE) {
$done += $row['N'];
}
- if ($status & PhabricatorRepositoryCommit::IMPORTED_OWNERS) {
- $done += $row['N'];
- }
- if ($status & PhabricatorRepositoryCommit::IMPORTED_HERALD) {
+ if ($status & PhabricatorRepositoryCommit::IMPORTED_PUBLISH) {
$done += $row['N'];
}
}
diff --git a/src/applications/repository/storage/PhabricatorRepositoryCommit.php b/src/applications/repository/storage/PhabricatorRepositoryCommit.php
--- a/src/applications/repository/storage/PhabricatorRepositoryCommit.php
+++ b/src/applications/repository/storage/PhabricatorRepositoryCommit.php
@@ -33,9 +33,8 @@
const IMPORTED_MESSAGE = 1;
const IMPORTED_CHANGE = 2;
- const IMPORTED_OWNERS = 4;
- const IMPORTED_HERALD = 8;
- const IMPORTED_ALL = 15;
+ const IMPORTED_PUBLISH = 8;
+ const IMPORTED_ALL = 11;
const IMPORTED_CLOSEABLE = 1024;
const IMPORTED_UNREACHABLE = 2048;
diff --git a/src/applications/repository/worker/PhabricatorRepositoryCommitHeraldWorker.php b/src/applications/repository/worker/PhabricatorRepositoryCommitHeraldWorker.php
deleted file mode 100644
--- a/src/applications/repository/worker/PhabricatorRepositoryCommitHeraldWorker.php
+++ /dev/null
@@ -1,146 +0,0 @@
-<?php
-
-final class PhabricatorRepositoryCommitHeraldWorker
- extends PhabricatorRepositoryCommitParserWorker {
-
- protected function getImportStepFlag() {
- return PhabricatorRepositoryCommit::IMPORTED_HERALD;
- }
-
- public function getRequiredLeaseTime() {
- // Herald rules may take a long time to process.
- return phutil_units('4 hours in seconds');
- }
-
- protected function parseCommit(
- PhabricatorRepository $repository,
- PhabricatorRepositoryCommit $commit) {
- $viewer = PhabricatorUser::getOmnipotentUser();
-
- if ($this->shouldSkipImportStep()) {
- // This worker has no followup tasks, so we can just bail out
- // right away without queueing anything.
- return;
- }
-
- // Reload the commit to pull commit data and audit requests.
- $commit = id(new DiffusionCommitQuery())
- ->setViewer(PhabricatorUser::getOmnipotentUser())
- ->withIDs(array($commit->getID()))
- ->needCommitData(true)
- ->needAuditRequests(true)
- ->executeOne();
- $data = $commit->getCommitData();
-
- if (!$data) {
- throw new PhabricatorWorkerPermanentFailureException(
- pht(
- 'Unable to load commit data. The data for this task is invalid '.
- 'or no longer exists.'));
- }
-
- $commit->attachRepository($repository);
-
- $content_source = $this->newContentSource();
-
- $committer_phid = $data->getCommitDetail('committerPHID');
- $author_phid = $data->getCommitDetail('authorPHID');
- $acting_as_phid = nonempty(
- $committer_phid,
- $author_phid,
- id(new PhabricatorDiffusionApplication())->getPHID());
-
- $editor = id(new PhabricatorAuditEditor())
- ->setActor($viewer)
- ->setActingAsPHID($acting_as_phid)
- ->setContinueOnMissingFields(true)
- ->setContinueOnNoEffect(true)
- ->setContentSource($content_source);
-
- $xactions = array();
- $xactions[] = id(new PhabricatorAuditTransaction())
- ->setTransactionType(PhabricatorAuditTransaction::TYPE_COMMIT)
- ->setDateCreated($commit->getEpoch())
- ->setNewValue(array(
- 'description' => $data->getCommitMessage(),
- 'summary' => $data->getSummary(),
- 'authorName' => $data->getAuthorName(),
- 'authorPHID' => $commit->getAuthorPHID(),
- 'committerName' => $data->getCommitDetail('committer'),
- 'committerPHID' => $data->getCommitDetail('committerPHID'),
- ));
-
- try {
- $raw_patch = $this->loadRawPatchText($repository, $commit);
- } catch (Exception $ex) {
- $raw_patch = pht('Unable to generate patch: %s', $ex->getMessage());
- }
- $editor->setRawPatch($raw_patch);
-
- return $editor->applyTransactions($commit, $xactions);
- }
-
- private function loadRawPatchText(
- PhabricatorRepository $repository,
- PhabricatorRepositoryCommit $commit) {
- $viewer = PhabricatorUser::getOmnipotentUser();
-
- $identifier = $commit->getCommitIdentifier();
-
- $drequest = DiffusionRequest::newFromDictionary(
- array(
- 'user' => $viewer,
- 'repository' => $repository,
- ));
-
- $time_key = 'metamta.diffusion.time-limit';
- $byte_key = 'metamta.diffusion.byte-limit';
- $time_limit = PhabricatorEnv::getEnvConfig($time_key);
- $byte_limit = PhabricatorEnv::getEnvConfig($byte_key);
-
- $diff_info = DiffusionQuery::callConduitWithDiffusionRequest(
- $viewer,
- $drequest,
- 'diffusion.rawdiffquery',
- array(
- 'commit' => $identifier,
- 'linesOfContext' => 3,
- 'timeout' => $time_limit,
- 'byteLimit' => $byte_limit,
- ));
-
- if ($diff_info['tooSlow']) {
- throw new Exception(
- pht(
- 'Patch generation took longer than configured limit ("%s") of '.
- '%s second(s).',
- $time_key,
- new PhutilNumber($time_limit)));
- }
-
- if ($diff_info['tooHuge']) {
- $pretty_limit = phutil_format_bytes($byte_limit);
- throw new Exception(
- pht(
- 'Patch size exceeds configured byte size limit ("%s") of %s.',
- $byte_key,
- $pretty_limit));
- }
-
- $file_phid = $diff_info['filePHID'];
- $file = id(new PhabricatorFileQuery())
- ->setViewer($viewer)
- ->withPHIDs(array($file_phid))
- ->executeOne();
- if (!$file) {
- throw new Exception(
- pht(
- 'Failed to load file ("%s") returned by "%s".',
- $file_phid,
- 'diffusion.rawdiffquery'));
- }
-
- return $file->loadFileData();
- }
-
-}
diff --git a/src/applications/repository/worker/PhabricatorRepositoryCommitOwnersWorker.php b/src/applications/repository/worker/PhabricatorRepositoryCommitPublishWorker.php
rename from src/applications/repository/worker/PhabricatorRepositoryCommitOwnersWorker.php
rename to src/applications/repository/worker/PhabricatorRepositoryCommitPublishWorker.php
--- a/src/applications/repository/worker/PhabricatorRepositoryCommitOwnersWorker.php
+++ b/src/applications/repository/worker/PhabricatorRepositoryCommitPublishWorker.php
@@ -1,10 +1,15 @@
<?php
-final class PhabricatorRepositoryCommitOwnersWorker
+final class PhabricatorRepositoryCommitPublishWorker
extends PhabricatorRepositoryCommitParserWorker {
protected function getImportStepFlag() {
- return PhabricatorRepositoryCommit::IMPORTED_OWNERS;
+ return PhabricatorRepositoryCommit::IMPORTED_PUBLISH;
+ }
+
+ public function getRequiredLeaseTime() {
+ // Herald rules may take a long time to process.
+ return phutil_units('4 hours in seconds');
}
protected function parseCommit(
@@ -12,20 +17,15 @@
PhabricatorRepositoryCommit $commit) {
if (!$this->shouldSkipImportStep()) {
- $this->triggerOwnerAudits($repository, $commit);
+ $this->publishCommit($repository, $commit);
$commit->writeImportStatusFlag($this->getImportStepFlag());
}
- if ($this->shouldQueueFollowupTasks()) {
- $this->queueTask(
- 'PhabricatorRepositoryCommitHeraldWorker',
- array(
- 'commitID' => $commit->getID(),
- ));
- }
+ // This is the last task in the sequence, so we don't need to queue any
+ // followup workers.
}
- private function triggerOwnerAudits(
+ private function publishCommit(
PhabricatorRepository $repository,
PhabricatorRepositoryCommit $commit) {
$viewer = PhabricatorUser::getOmnipotentUser();
@@ -35,6 +35,88 @@
return;
}
+ $commit_phid = $commit->getPHID();
+
+ // Reload the commit to get the commit data, identities, and any
+ // outstanding audit requests.
+ $commit = id(new DiffusionCommitQuery())
+ ->setViewer($viewer)
+ ->withPHIDs(array($commit_phid))
+ ->needCommitData(true)
+ ->needIdentities(true)
+ ->needAuditRequests(true)
+ ->executeOne();
+ if (!$commit) {
+ throw new PhabricatorWorkerPermanentFailureException(
+ pht(
+ 'Failed to reload commit "%s".',
+ $commit_phid));
+ }
+
+ $xactions = array(
+ $this->newAuditTransactions($commit),
+ $this->newPublishTransactions($commit),
+ );
+ $xactions = array_mergev($xactions);
+
+ $acting_phid = $this->getPublishAsPHID($commit);
+ $content_source = $this->newContentSource();
+
+ $editor = $commit->getApplicationTransactionEditor()
+ ->setActor($viewer)
+ ->setActingAsPHID($acting_phid)
+ ->setContinueOnNoEffect(true)
+ ->setContinueOnMissingFields(true)
+ ->setContentSource($content_source);
+
+ try {
+ $raw_patch = $this->loadRawPatchText($repository, $commit);
+ } catch (Exception $ex) {
+ $raw_patch = pht('Unable to generate patch: %s', $ex->getMessage());
+ }
+ $editor->setRawPatch($raw_patch);
+
+ $editor->applyTransactions($commit, $xactions);
+ }
+
+ private function getPublishAsPHID(PhabricatorRepositoryCommit $commit) {
+ if ($commit->hasCommitterIdentity()) {
+ return $commit->getCommitterIdentity()->getIdentityDisplayPHID();
+ }
+
+ if ($commit->hasAuthorIdentity()) {
+ return $commit->getAuthorIdentity()->getIdentityDisplayPHID();
+ }
+
+ return id(new PhabricatorDiffusionApplication())->getPHID();
+ }
+
+ private function newPublishTransactions(PhabricatorRepositoryCommit $commit) {
+ $data = $commit->getCommitData();
+
+ $xactions = array();
+
+ $xactions[] = $commit->getApplicationTransactionTemplate()
+ ->setTransactionType(PhabricatorAuditTransaction::TYPE_COMMIT)
+ ->setDateCreated($commit->getEpoch())
+ ->setNewValue(
+ array(
+ 'description' => $data->getCommitMessage(),
+ 'summary' => $data->getSummary(),
+ 'authorName' => $data->getAuthorName(),
+ 'authorPHID' => $commit->getAuthorPHID(),
+ 'committerName' => $data->getCommitDetail('committer'),
+ 'committerPHID' => $data->getCommitDetail('committerPHID'),
+ ));
+
+ return $xactions;
+ }
+
+ private function newAuditTransactions(PhabricatorRepositoryCommit $commit) {
+ $viewer = PhabricatorUser::getOmnipotentUser();
+
+ $repository = $commit->getRepository();
+
$affected_paths = PhabricatorOwnerPathQuery::loadAffectedPaths(
$repository,
$commit,
@@ -47,17 +129,7 @@
$commit->writeOwnersEdges(mpull($affected_packages, 'getPHID'));
if (!$affected_packages) {
- return;
- }
-
- $commit = id(new DiffusionCommitQuery())
- ->setViewer($viewer)
- ->withPHIDs(array($commit->getPHID()))
- ->needCommitData(true)
- ->needAuditRequests(true)
- ->executeOne();
- if (!$commit) {
- return;
+ return array();
}
$data = $commit->getCommitData();
@@ -99,16 +171,11 @@
// If none of the packages are triggering audits, we're all done.
if (!$auditor_phids) {
- return;
+ return array();
}
$audit_type = DiffusionCommitAuditorsTransaction::TRANSACTIONTYPE;
- $owners_phid = id(new PhabricatorOwnersApplication())
- ->getPHID();
-
- $content_source = $this->newContentSource();
-
$xactions = array();
$xactions[] = $commit->getApplicationTransactionTemplate()
->setTransactionType($audit_type)
@@ -117,14 +184,7 @@
'+' => array_fuse($auditor_phids),
));
- $editor = $commit->getApplicationTransactionEditor()
- ->setActor($viewer)
- ->setActingAsPHID($owners_phid)
- ->setContinueOnNoEffect(true)
- ->setContinueOnMissingFields(true)
- ->setContentSource($content_source);
-
- $editor->applyTransactions($commit, $xactions);
+ return $xactions;
}
private function shouldTriggerAudit(
@@ -253,4 +313,66 @@
return false;
}
+ private function loadRawPatchText(
+ PhabricatorRepository $repository,
+ PhabricatorRepositoryCommit $commit) {
+ $viewer = PhabricatorUser::getOmnipotentUser();
+
+ $identifier = $commit->getCommitIdentifier();
+
+ $drequest = DiffusionRequest::newFromDictionary(
+ array(
+ 'user' => $viewer,
+ 'repository' => $repository,
+ ));
+
+ $time_key = 'metamta.diffusion.time-limit';
+ $byte_key = 'metamta.diffusion.byte-limit';
+ $time_limit = PhabricatorEnv::getEnvConfig($time_key);
+ $byte_limit = PhabricatorEnv::getEnvConfig($byte_key);
+
+ $diff_info = DiffusionQuery::callConduitWithDiffusionRequest(
+ $viewer,
+ $drequest,
+ 'diffusion.rawdiffquery',
+ array(
+ 'commit' => $identifier,
+ 'linesOfContext' => 3,
+ 'timeout' => $time_limit,
+ 'byteLimit' => $byte_limit,
+ ));
+
+ if ($diff_info['tooSlow']) {
+ throw new Exception(
+ pht(
+ 'Patch generation took longer than configured limit ("%s") of '.
+ '%s second(s).',
+ $time_key,
+ new PhutilNumber($time_limit)));
+ }
+
+ if ($diff_info['tooHuge']) {
+ $pretty_limit = phutil_format_bytes($byte_limit);
+ throw new Exception(
+ pht(
+ 'Patch size exceeds configured byte size limit ("%s") of %s.',
+ $byte_key,
+ $pretty_limit));
+ }
+
+ $file_phid = $diff_info['filePHID'];
+ $file = id(new PhabricatorFileQuery())
+ ->setViewer($viewer)
+ ->withPHIDs(array($file_phid))
+ ->executeOne();
+ if (!$file) {
+ throw new Exception(
+ pht(
+ 'Failed to load file ("%s") returned by "%s".',
+ $file_phid,
+ 'diffusion.rawdiffquery'));
+ }
+
+ return $file->loadFileData();
+ }
}
diff --git a/src/applications/repository/worker/commitchangeparser/PhabricatorRepositoryCommitChangeParserWorker.php b/src/applications/repository/worker/commitchangeparser/PhabricatorRepositoryCommitChangeParserWorker.php
--- a/src/applications/repository/worker/commitchangeparser/PhabricatorRepositoryCommitChangeParserWorker.php
+++ b/src/applications/repository/worker/commitchangeparser/PhabricatorRepositoryCommitChangeParserWorker.php
@@ -102,7 +102,7 @@
$commit = $this->commit;
if ($this->shouldQueueFollowupTasks()) {
$this->queueTask(
- 'PhabricatorRepositoryCommitOwnersWorker',
+ 'PhabricatorRepositoryCommitPublishWorker',
array(
'commitID' => $commit->getID(),
));
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Mar 23, 2:10 PM (1 d, 1 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7714556
Default Alt Text
D20467.id48843.diff (28 KB)
Attached To
Mode
D20467: Merge the "Herald" and "Owners" daemon workers into a single "Publish" worker
Attached
Detach File
Event Timeline
Log In to Comment