From ade25facfdf22aed1c1e20fed3e58e60c0be3c2b Mon Sep 17 00:00:00 2001 From: epriestley Date: Thu, 5 Jan 2017 13:55:34 -0800 Subject: [PATCH] Fix a bad interaction between "arc diff --reviewers" and "the first line of a message is always a title" Summary: Fixes T12069. We implement "arc diff --reviewers" (and "--cc") by parsing a faux message with "Reviewers: ...". After D17122, the first line of the message is always interpreted as a title, so the text ends up in the message body. Instead, use a placeholder title so these fields are never initial fields. Test Plan: Ran `arc diff --reviewers dog`, got only one "Reviewers" field. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12069 Differential Revision: https://secure.phabricator.com/D17147 --- src/workflow/ArcanistDiffWorkflow.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/workflow/ArcanistDiffWorkflow.php b/src/workflow/ArcanistDiffWorkflow.php index 7834f4b8..c7f2ff0a 100644 --- a/src/workflow/ArcanistDiffWorkflow.php +++ b/src/workflow/ArcanistDiffWorkflow.php @@ -1962,7 +1962,13 @@ EOTEXT $faux_message[] = pht('CC: %s', $this->getArgument('cc')); } + // See T12069. After T10312, the first line of a message is always parsed + // as a title. Add a placeholder so "Reviewers" and "CC" are never the + // first line. + $placeholder_title = pht(''); + if ($faux_message) { + array_unshift($faux_message, $placeholder_title); $faux_message = implode("\n\n", $faux_message); $local = array( '(Flags) ' => array( @@ -2034,6 +2040,10 @@ EOTEXT continue; } + if ($title === $placeholder_title) { + continue; + } + if (!isset($result['title'])) { // We don't have a title yet, so use this one. $result['title'] = $title;