diff --git a/src/applications/differential/controller/DifferentialChangesetViewController.php b/src/applications/differential/controller/DifferentialChangesetViewController.php --- a/src/applications/differential/controller/DifferentialChangesetViewController.php +++ b/src/applications/differential/controller/DifferentialChangesetViewController.php @@ -166,6 +166,15 @@ $parser->readParametersFromRequest($request); + $generated_paths = id(new DifferentialDiffProperty())->loadOneWhere( + 'diffID = %d AND name = %s', + $changeset->getDiffID(), + 'arc:generated'); + + if ($generated_paths) { + $parser->setGeneratedPaths($generated_paths->getData()); + } + if ($left && $right) { $parser->setOriginals($left, $right); } diff --git a/src/applications/differential/parser/DifferentialChangesetParser.php b/src/applications/differential/parser/DifferentialChangesetParser.php --- a/src/applications/differential/parser/DifferentialChangesetParser.php +++ b/src/applications/differential/parser/DifferentialChangesetParser.php @@ -46,6 +46,7 @@ private $renderer; private $characterEncoding; private $highlightAs; + private $generatedPaths = array(); private $highlightingDisabled; private $showEditAndReplyLinks = true; private $canMarkDone; @@ -97,6 +98,14 @@ return $this->characterEncoding; } + public function setGeneratedPaths(array $paths) { + $this->generatedPaths = $paths; + } + + public function getGeneratedPaths() { + return $this->generatedPaths; + } + public function setRenderer(DifferentialChangesetRenderer $renderer) { $this->renderer = $renderer; return $this; @@ -493,8 +502,19 @@ $generated_guess = (strpos($new_corpus_block, '@'.'generated') !== false); if (!$generated_guess) { - $generated_path_regexps = PhabricatorEnv::getEnvConfig( - 'differential.generated-paths'); + foreach ($this->generatedPaths as $regex) { + if (preg_match($regex, $this->changeset->getFilename())) { + $generated_guess = true; + break; + } + } + } + + // The following is deprecated and should not be used. + if (!$generated_guess) { + $key = 'differential.generated-paths'; + $generated_path_regexps = PhabricatorEnv::getEnvConfig($key); + foreach ($generated_path_regexps as $regexp) { if (preg_match($regexp, $this->changeset->getFilename())) { $generated_guess = true;