Page MenuHomePhabricator

D20915.diff
No OneTemporary

D20915.diff

diff --git a/src/workflow/ArcanistCloseRevisionWorkflow.php b/src/workflow/ArcanistCloseRevisionWorkflow.php
--- a/src/workflow/ArcanistCloseRevisionWorkflow.php
+++ b/src/workflow/ArcanistCloseRevisionWorkflow.php
@@ -89,11 +89,13 @@
));
$revision = head($revisions);
+ $object_name = "D{$revision_id}";
+
if (!$revision && !$is_finalize) {
throw new ArcanistUsageException(
pht(
'Revision %s does not exist.',
- "D{$revision_id}"));
+ $object_name));
}
$status_accepted = ArcanistDifferentialRevisionStatus::ACCEPTED;
@@ -104,15 +106,20 @@
pht(
"Revision %s can not be closed. You can only close ".
"revisions which have been 'accepted'.",
- "D{$revision_id}"));
+ $object_name));
}
if ($revision) {
+ $revision_display = sprintf(
+ '%s %s',
+ $object_name,
+ $revision['title']);
+
if (!$is_finalize && $revision['authorPHID'] != $this->getUserPHID()) {
$prompt = pht(
- 'You are not the author of revision %s, '.
+ 'You are not the author of revision "%s", '.
'are you sure you want to close it?',
- "D{$revision_id}");
+ $object_name);
if (!phutil_console_confirm($prompt)) {
throw new ArcanistUserAbortException();
}
@@ -120,24 +127,42 @@
$actually_close = true;
if ($is_finalize) {
- if ($this->getRepositoryPHID() ||
- $revision['status'] != $status_accepted) {
+ if ($this->getRepositoryPHID()) {
+ $actually_close = false;
+ } else if ($revision['status'] != $status_accepted) {
+ // See T13458. The server doesn't permit a transition to "Closed"
+ // over the API if the revision is not "Accepted". If we won't be
+ // able to close the revision, skip the attempt and print a
+ // message.
+
+ $this->writeWarn(
+ pht('OPEN REVISION'),
+ pht(
+ 'Revision "%s" is not in state "Accepted", so it will '.
+ 'be left open.',
+ $object_name));
+
$actually_close = false;
}
}
- if ($actually_close) {
- $revision_name = $revision['title'];
- echo pht(
- "Closing revision %s '%s'...\n",
- "D{$revision_id}",
- $revision_name);
+ if ($actually_close) {
+ $this->writeInfo(
+ pht('CLOSE'),
+ pht(
+ 'Closing revision "%s"...',
+ $revision_display));
$conduit->callMethodSynchronous(
'differential.close',
array(
'revisionID' => $revision_id,
));
+
+ $this->writeOkay(
+ pht('CLOSE'),
+ pht(
+ 'Done, closed revision.'));
}
}

File Metadata

Mime Type
text/plain
Expires
Sun, May 12, 3:07 AM (3 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6287677
Default Alt Text
D20915.diff (2 KB)

Event Timeline