Commit a27c824d authored by epriestley's avatar epriestley
Browse files

Draw project PHIDs from repositories when evaluating Herald object rules for commits

Fixes T12097. In D16413, I simplified this code but caused us to load the //commit's// projects instead of the //repository's// projects, which is incorrect.

Normally, commits don't have any project tags when Herald evaluates, so using the commit's projects is generally meaningless.

Test Plan:
  - Tagged a repository with `#X`.
  - Created a Herald object rule for commits with `#X` as the object ("Always ... do nothing.")
  - Ran a commit from the repository.
  - Before patch: rule failed to evaluate.
  - After patch: rule evaluated and passed.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T12097

Differential Revision:
parent 7ff0be1b
...@@ -104,12 +104,26 @@ final class HeraldCommitAdapter ...@@ -104,12 +104,26 @@ final class HeraldCommitAdapter
public function getTriggerObjectPHIDs() { public function getTriggerObjectPHIDs() {
$project_type = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST; $project_type = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST;
return array_merge( $repository_phid = $this->getRepository()->getPHID();
array( $commit_phid = $this->getObject()->getPHID();
$this->getPHID(), $phids = array();
), $phids[] = $commit_phid;
$this->loadEdgePHIDs($project_type)); $phids[] = $repository_phid;
// NOTE: This is projects for the repository, not for the commit. When
// Herald evalutes, commits normally can not have any project tags yet.
$repository_project_phids = PhabricatorEdgeQuery::loadDestinationPHIDs(
foreach ($repository_project_phids as $phid) {
$phids[] = $phid;
$phids = array_unique($phids);
$phids = array_values($phids);
return $phids;
} }
public function explainValidTriggerObjects() { public function explainValidTriggerObjects() {
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment