1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2025-01-16 09:41:06 +01:00

Improve help and prompts for the "--draft" flag

Summary:
See PHI458. The help text and prompting for "arc diff --draft" aren't very clear about whether updating publishes or not, nor about whether you need to keep passing "--draft" every time.

Make these behaviors more clear.

Test Plan:
  - Ran `arc help diff`, read text.
  - Updated a draft with "--draft", got new warning but it went through.
  - Updated a published revision with "--draft", got new error.

Differential Revision: https://secure.phabricator.com/D19229
This commit is contained in:
epriestley 2018-03-14 20:20:55 -07:00
parent e64cbd3ba7
commit 49a3ae9dad

View file

@ -22,6 +22,7 @@ final class ArcanistDiffWorkflow extends ArcanistWorkflow {
private $commitMessageFromRevision;
private $hitAutotargets;
private $revisionTransactions;
private $revisionIsDraft;
const STAGING_PUSHED = 'pushed';
const STAGING_USER_SKIP = 'user.skip';
@ -192,8 +193,10 @@ EOTEXT
),
'draft' => array(
'help' => pht(
'Hold this revision as a draft instead of submitting it for '.
'review.'),
'Create a draft revision so you can look over your changes before '.
'involving anyone else. Other users will not be notified about the '.
'revision until you later use "Request Review" to publish it. You '.
'can still share the draft by giving someone the link.'),
'conflicts' => array(
'edit' => null,
'only' => null,
@ -528,12 +531,25 @@ EOTEXT
if ($is_draft) {
// TODO: In at least some cases, we could raise this earlier in the
// workflow to save users some time before the workflow aborts.
throw new ArcanistUsageException(
pht(
'You are updating a revision ("%s") but have specified '.
'the "--draft" flag. Only newly created revisions can be '.
'held as drafts.',
$commit_message->getRevisionMonogram()));
if ($this->revisionIsDraft) {
$this->writeWarn(
pht('ALREADY A DRAFT'),
pht(
'You are updating a revision ("%s") with the "--draft" flag, '.
'but this revision is already a draft. You only need to '.
'provide the "--draft" flag when creating a revision. Draft '.
'revisions are not published until you explicitly request '.
'review from the web UI.',
$commit_message->getRevisionMonogram()));
} else {
throw new ArcanistUsageException(
pht(
'You are updating a revision ("%s") with the "--draft" flag, '.
'but this revision has already been published for review. '.
'You can not turn a revision back into a draft once it has '.
'been published.',
$commit_message->getRevisionMonogram()));
}
}
$result = $conduit->callMethodSynchronous(
@ -1793,6 +1809,12 @@ EOTEXT
$this->checkRevisionOwnership($revision);
// TODO: Save this status to improve a prompt later. See PHI458. This is
// extra awful until we move to "differential.revision.search" because
// the "differential.query" method doesn't return a real draft status for
// compatibility.
$this->revisionIsDraft = (idx($revision, 'statusName') === 'Draft');
$message = $this->getConduit()->callMethodSynchronous(
'differential.getcommitmessage',
array(