1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-19 20:10:55 +01:00

Always parse the first line of a commit message as a title

Summary: Fixes T10312. If your first line is "Reviewers: xyz", it's a title, not a "Reviewers" field.

Test Plan: Added unit test.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T10312

Differential Revision: https://secure.phabricator.com/D17122
This commit is contained in:
epriestley 2017-01-01 08:23:42 -08:00
parent ab17a7d4bf
commit 81e2a1cf6b
2 changed files with 30 additions and 9 deletions

View file

@ -161,17 +161,27 @@ final class DifferentialCommitMessageParser extends Phobject {
$field_map = array();
foreach ($lines as $key => $line) {
$match = null;
if (preg_match($label_regexp, $line, $match)) {
$lines[$key] = trim($match['text']);
$field = $label_map[self::normalizeFieldLabel($match['field'])];
if (!empty($seen[$field])) {
$this->errors[] = pht(
'Field "%s" occurs twice in commit message!',
$field);
}
// We always parse the first line of the message as a title, even if it
// contains something we recognize as a field header.
if (!isset($seen[$key_title])) {
$field = $key_title;
$lines[$key] = trim($line);
$seen[$field] = true;
} else {
$match = null;
if (preg_match($label_regexp, $line, $match)) {
$lines[$key] = trim($match['text']);
$field = $label_map[self::normalizeFieldLabel($match['field'])];
if (!empty($seen[$field])) {
$this->errors[] = pht(
'Field "%s" occurs twice in commit message!',
$match['field']);
}
$seen[$field] = true;
}
}
$field_map[$key] = $field;
}

View file

@ -0,0 +1,11 @@
color: orange
~~~~~~~~~~
{
"color": "color"
}
~~~~~~~~~~
{
"title": "color: orange"
}
~~~~~~~~~~
[]