Index: src/applications/diffusion/controller/DiffusionCommitController.php =================================================================== --- src/applications/diffusion/controller/DiffusionCommitController.php +++ src/applications/diffusion/controller/DiffusionCommitController.php @@ -634,6 +634,8 @@ $props['Tasks'] = $task_list; } + $props = $this->addCustomFieldProperties($props, $commit, $data); + return $props; } @@ -1082,4 +1084,47 @@ return $parser->processCorpus($corpus); } + private function addCustomFieldProperties($props, $commit, $data) { + $field_list = PhabricatorCustomField::getObjectFields( + $commit, + PhabricatorCustomField::ROLE_VIEW); + $field_list + ->setViewer(PhabricatorUser::getOmnipotentUser()) + ->readFieldsFromStorage($commit); + + $fields = $field_list->getFields(); + $field_names = array(); + $field_map = array(); + foreach ($fields as $field) { + if (!$field->shouldAppearInPropertyView()) { + continue; + } + $label = phutil_utf8_strtolower($field->getFieldName()); + $field_names[$label] = $field->getFieldName(); + $field_map[$label] = $field; + } + $corpus = $data->getCommitMessage(); + $key_title = id(new DifferentialTitleField())->getFieldKeyForConduit(); + $key_summary = id(new DifferentialSummaryField())->getFieldKeyForConduit(); + + $parser = id(new DifferentialCommitMessageParser()) + ->setLabelMap($field_names) + ->setTitleKey($key_title) + ->setSummaryKey($key_summary); + + $result = $parser->parseCorpus($corpus); + + foreach ($field_map as $name => $field) { + $uname = $field->getFieldName(); + if (isset($result[$uname])) { + $value = $result[$uname]; + $value = $field->parseValueFromCommitMessage($value); + $field->readValueFromCommitMessage($value); + $props[$uname] = $field->renderPropertyViewValue(array()); + } + } + + return $props; + } + }