From 19f2110e74286bbf9942245c1b9b449c7c372970 Mon Sep 17 00:00:00 2001 From: epriestley Date: Thu, 1 Dec 2011 16:01:48 -0800 Subject: [PATCH] Allow "differential.getcommitmessage" to be called without a revision ID in order to generate a template Summary: See T614. This allows us to generate an empty template by calling Conduit, so we can build command-line editing workflows for SVN, Mercurial, and conservative-Git. Test Plan: Used web console to invoke Conduit method; got a reasonable empty template out of it. Reviewers: btrahan, jungejason Reviewed By: btrahan CC: aran, epriestley, btrahan Differential Revision: 1156 --- .../api/PhabricatorConduitAPIController.php | 5 +++++ ...uitAPI_differential_getcommitmessage_Method.php | 14 +++++++++----- .../DifferentialRevisionIDFieldSpecification.php | 4 ++++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/applications/conduit/controller/api/PhabricatorConduitAPIController.php b/src/applications/conduit/controller/api/PhabricatorConduitAPIController.php index 1f7166fcb1..04105e3fb6 100644 --- a/src/applications/conduit/controller/api/PhabricatorConduitAPIController.php +++ b/src/applications/conduit/controller/api/PhabricatorConduitAPIController.php @@ -67,6 +67,11 @@ class PhabricatorConduitAPIController if (isset($_REQUEST['params']) && is_array($_REQUEST['params'])) { $params_post = $request->getArr('params'); foreach ($params_post as $key => $value) { + if ($value == '') { + // Interpret empty string null (e.g., the user didn't type anything + // into the box). + $value = 'null'; + } $decoded_value = json_decode($value, true); if ($decoded_value === null && strtolower($value) != 'null') { // When json_decode() fails, it returns null. This almost certainly diff --git a/src/applications/conduit/method/differential/getcommitmessage/ConduitAPI_differential_getcommitmessage_Method.php b/src/applications/conduit/method/differential/getcommitmessage/ConduitAPI_differential_getcommitmessage_Method.php index 44a552de93..7bd106a3ee 100644 --- a/src/applications/conduit/method/differential/getcommitmessage/ConduitAPI_differential_getcommitmessage_Method.php +++ b/src/applications/conduit/method/differential/getcommitmessage/ConduitAPI_differential_getcommitmessage_Method.php @@ -22,12 +22,12 @@ class ConduitAPI_differential_getcommitmessage_Method extends ConduitAPIMethod { public function getMethodDescription() { - return "Retrieve Differential commit messages."; + return "Retrieve Differential commit messages or message templates."; } public function defineParamTypes() { return array( - 'revision_id' => 'required revision_id', + 'revision_id' => 'optional revision_id', 'fields' => 'optional dict', 'edit' => 'optional bool', ); @@ -46,9 +46,13 @@ class ConduitAPI_differential_getcommitmessage_Method extends ConduitAPIMethod { protected function execute(ConduitAPIRequest $request) { $id = $request->getValue('revision_id'); - $revision = id(new DifferentialRevision())->load($id); - if (!$revision) { - throw new ConduitException('ERR_NOT_FOUND'); + if ($id) { + $revision = id(new DifferentialRevision())->load($id); + if (!$revision) { + throw new ConduitException('ERR_NOT_FOUND'); + } + } else { + $revision = new DifferentialRevision(); } $revision->loadRelationships(); diff --git a/src/applications/differential/field/specification/revisionid/DifferentialRevisionIDFieldSpecification.php b/src/applications/differential/field/specification/revisionid/DifferentialRevisionIDFieldSpecification.php index 190547c942..645400a83c 100644 --- a/src/applications/differential/field/specification/revisionid/DifferentialRevisionIDFieldSpecification.php +++ b/src/applications/differential/field/specification/revisionid/DifferentialRevisionIDFieldSpecification.php @@ -29,6 +29,10 @@ final class DifferentialRevisionIDFieldSpecification return true; } + public function shouldAppearOnCommitMessageTemplate() { + return false; + } + public function getCommitMessageKey() { return 'revisionID'; }