From ab117c2baf34b8a0331c3856d93652e4a48f6ef8 Mon Sep 17 00:00:00 2001 From: epriestley Date: Fri, 14 Mar 2014 11:50:22 -0700 Subject: [PATCH] Fix "arc diff --verbatim" when updating a revision Summary: Fixes T4601. The "Differential Revision" field needs to be present in the "editable" version of the message so that `--verbatim` works correctly. Some day all of this might get rewritten to be a little easier to follow, maybe, but keep things working properly for now. Test Plan: Used `arc diff`, `arc diff --edit`, `arc diff --verbatim` Reviewers: btrahan Reviewed By: btrahan Subscribers: aran, epriestley Maniphest Tasks: T4601 Differential Revision: https://secure.phabricator.com/D8526 --- .../customfield/DifferentialRevisionIDField.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/applications/differential/customfield/DifferentialRevisionIDField.php b/src/applications/differential/customfield/DifferentialRevisionIDField.php index ae6910e9cc..74c38767d9 100644 --- a/src/applications/differential/customfield/DifferentialRevisionIDField.php +++ b/src/applications/differential/customfield/DifferentialRevisionIDField.php @@ -3,6 +3,8 @@ final class DifferentialRevisionIDField extends DifferentialCustomField { + private $revisionID; + public function getFieldKey() { return 'differential:revision-id'; } @@ -29,16 +31,20 @@ final class DifferentialRevisionIDField return true; } - public function shouldAllowEditInCommitMessage() { - return false; - } - public function parseValueFromCommitMessage($value) { return self::parseRevisionIDFromURI($value); } public function renderCommitMessageValue(array $handles) { - return PhabricatorEnv::getProductionURI('/D'.$this->getObject()->getID()); + $id = coalesce($this->revisionID, $this->getObject()->getID()); + if (!$id) { + return null; + } + return PhabricatorEnv::getProductionURI('/D'.$id); + } + + public function readValueFromCommitMessage($value) { + $this->revisionID = $value; } private static function parseRevisionIDFromURI($uri) {