Page MenuHomePhabricator

D17122.id41185.diff
No OneTemporary

D17122.id41185.diff

diff --git a/src/applications/differential/parser/DifferentialCommitMessageParser.php b/src/applications/differential/parser/DifferentialCommitMessageParser.php
--- a/src/applications/differential/parser/DifferentialCommitMessageParser.php
+++ b/src/applications/differential/parser/DifferentialCommitMessageParser.php
@@ -161,17 +161,27 @@
$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;
}
diff --git a/src/applications/differential/parser/__tests__/messages/title-with-label.txt b/src/applications/differential/parser/__tests__/messages/title-with-label.txt
new file mode 100644
--- /dev/null
+++ b/src/applications/differential/parser/__tests__/messages/title-with-label.txt
@@ -0,0 +1,11 @@
+color: orange
+~~~~~~~~~~
+{
+ "color": "color"
+}
+~~~~~~~~~~
+{
+ "title": "color: orange"
+}
+~~~~~~~~~~
+[]

File Metadata

Mime Type
text/plain
Expires
Sun, Nov 17, 11:24 PM (1 d, 2 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6712644
Default Alt Text
D17122.id41185.diff (1 KB)

Event Timeline