From 3abebbebfddea6b4fcd030405eb4f3e012dc37a8 Mon Sep 17 00:00:00 2001 From: Marek Sapota Date: Tue, 13 Dec 2011 11:38:45 -0800 Subject: [PATCH] Make --revision switch of amend workflow easier to use Summary: --revision doesn't allow the revision to be prefixed with 'D'. Also the error message showed when specified revision doesn't exist is hard to understand. Test Plan: Used `arc amend --revision D123`, tried it without 'D' and with a non existing revision. Reviewers: epriestley Reviewed By: epriestley CC: aran, epriestley Differential Revision: 1193 --- src/workflow/amend/ArcanistAmendWorkflow.php | 25 ++++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/workflow/amend/ArcanistAmendWorkflow.php b/src/workflow/amend/ArcanistAmendWorkflow.php index 0c16e4ba..8ae1ea60 100644 --- a/src/workflow/amend/ArcanistAmendWorkflow.php +++ b/src/workflow/amend/ArcanistAmendWorkflow.php @@ -90,7 +90,7 @@ EOTEXT } if ($this->getArgument('revision')) { - $revision_id = $this->getArgument('revision'); + $revision_id = $this->normalizeRevisionID($this->getArgument('revision')); } else { $log = $repository_api->getGitCommitLog(); $parser = new ArcanistDiffParser(); @@ -117,12 +117,23 @@ EOTEXT // revision in it. Maybe this is worth restoring? $conduit = $this->getConduit(); - $message = $conduit->callMethodSynchronous( - 'differential.getcommitmessage', - array( - 'revision_id' => $revision_id, - 'edit' => false, - )); + try { + $message = $conduit->callMethodSynchronous( + 'differential.getcommitmessage', + array( + 'revision_id' => $revision_id, + 'edit' => false, + ) + ); + } catch (ConduitClientException $ex) { + if (strpos($ex->getMessage(), 'ERR_NOT_FOUND') === false) { + throw $ex; + } else { + throw new ArcanistUsageException( + "Revision D{$revision_id} does not exist." + ); + } + } if ($is_show) { echo $message."\n";