@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add an explcit "Changes Planned" state for Differential

Summary: Ref T2222. Ref T4481. This fixes the issue where "Plan Changes" could immediately trigger a state change (e.g., back to accepted) because of state-based transitions out of the NEEDS_REVISION state.

Test Plan: Planned changes an "accepted" revision, it didn't immediately return to being accepted.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T2222, T4481

Differential Revision: https://secure.phabricator.com/D8403

+24 -4
+10
src/applications/differential/constants/DifferentialRevisionStatus.php
··· 21 21 self::COLOR_STATUS_DEFAULT, 22 22 ArcanistDifferentialRevisionStatus::NEEDS_REVISION => 23 23 self::COLOR_STATUS_RED, 24 + ArcanistDifferentialRevisionStatus::CHANGES_PLANNED => 25 + self::COLOR_STATUS_RED, 24 26 ArcanistDifferentialRevisionStatus::ACCEPTED => 25 27 self::COLOR_STATUS_GREEN, 26 28 ArcanistDifferentialRevisionStatus::CLOSED => 27 29 self::COLOR_STATUS_DARK, 28 30 ArcanistDifferentialRevisionStatus::ABANDONED => 31 + self::COLOR_STATUS_DARK, 32 + ArcanistDifferentialRevisionStatus::IN_PREPARATION => 29 33 self::COLOR_STATUS_DARK, 30 34 ); 31 35 return idx($map, $status, $default); ··· 39 43 'oh-open', 40 44 ArcanistDifferentialRevisionStatus::NEEDS_REVISION => 41 45 'oh-open-red', 46 + ArcanistDifferentialRevisionStatus::CHANGES_PLANNED => 47 + 'oh-open-red', 42 48 ArcanistDifferentialRevisionStatus::ACCEPTED => 43 49 'oh-open-green', 44 50 ArcanistDifferentialRevisionStatus::CLOSED => 45 51 'oh-closed-dark', 46 52 ArcanistDifferentialRevisionStatus::ABANDONED => 47 53 'oh-closed-dark', 54 + ArcanistDifferentialRevisionStatus::IN_PREPARATION => 55 + 'question-blue', 48 56 ); 49 57 return idx($map, $status, $default); 50 58 } ··· 92 100 return array( 93 101 ArcanistDifferentialRevisionStatus::NEEDS_REVIEW, 94 102 ArcanistDifferentialRevisionStatus::NEEDS_REVISION, 103 + ArcanistDifferentialRevisionStatus::CHANGES_PLANNED, 95 104 ArcanistDifferentialRevisionStatus::ACCEPTED, 96 105 ArcanistDifferentialRevisionStatus::CLOSED, 97 106 ArcanistDifferentialRevisionStatus::ABANDONED, 107 + ArcanistDifferentialRevisionStatus::IN_PREPARATION, 98 108 ); 99 109 } 100 110
+2
src/applications/differential/controller/DifferentialRevisionViewController.php
··· 523 523 $actions[DifferentialAction::ACTION_RETHINK] = true; 524 524 break; 525 525 case ArcanistDifferentialRevisionStatus::NEEDS_REVISION: 526 + case ArcanistDifferentialRevisionStatus::CHANGES_PLANNED: 526 527 $actions[DifferentialAction::ACTION_ACCEPT] = $allow_self_accept; 527 528 $actions[DifferentialAction::ACTION_ABANDON] = true; 528 529 $actions[DifferentialAction::ACTION_REQUEST] = true; ··· 547 548 $actions[DifferentialAction::ACTION_RESIGN] = $viewer_is_reviewer; 548 549 break; 549 550 case ArcanistDifferentialRevisionStatus::NEEDS_REVISION: 551 + case ArcanistDifferentialRevisionStatus::CHANGES_PLANNED: 550 552 $actions[DifferentialAction::ACTION_ACCEPT] = true; 551 553 $actions[DifferentialAction::ACTION_REJECT] = !$viewer_has_rejected; 552 554 $actions[DifferentialAction::ACTION_RESIGN] = $viewer_is_reviewer;
+1
src/applications/differential/editor/DifferentialRevisionEditor.php
··· 437 437 // be able to put the revision into "accepted". 438 438 switch ($revision->getStatus()) { 439 439 case ArcanistDifferentialRevisionStatus::NEEDS_REVISION: 440 + case ArcanistDifferentialRevisionStatus::CHANGES_PLANNED: 440 441 case ArcanistDifferentialRevisionStatus::NEEDS_REVIEW: 441 442 $revision = self::updateAcceptedStatus( 442 443 $this->getActor(),
+10 -4
src/applications/differential/editor/DifferentialTransactionEditor.php
··· 72 72 $status_abandoned = ArcanistDifferentialRevisionStatus::ABANDONED; 73 73 $status_review = ArcanistDifferentialRevisionStatus::NEEDS_REVIEW; 74 74 $status_revision = ArcanistDifferentialRevisionStatus::NEEDS_REVISION; 75 + $status_plan = ArcanistDifferentialRevisionStatus::CHANGES_PLANNED; 75 76 76 77 $action_type = $xaction->getNewValue(); 77 78 switch ($action_type) { ··· 86 87 $actor = $this->getActor(); 87 88 $actor_phid = $actor->getPHID(); 88 89 89 - // These transactions can cause effects in to ways: by altering the 90 + // These transactions can cause effects in two ways: by altering the 90 91 // status of an existing reviewer; or by adding the actor as a new 91 92 // reviewer. 92 93 ··· 112 113 case DifferentialAction::ACTION_REOPEN: 113 114 return ($object->getStatus() == $status_closed); 114 115 case DifferentialAction::ACTION_RETHINK: 115 - return ($object->getStatus() != $status_revision); 116 + return ($object->getStatus() != $status_plan); 116 117 case DifferentialAction::ACTION_REQUEST: 117 118 return ($object->getStatus() != $status_review); 118 119 case DifferentialAction::ACTION_RESIGN: ··· 139 140 140 141 $status_review = ArcanistDifferentialRevisionStatus::NEEDS_REVIEW; 141 142 $status_revision = ArcanistDifferentialRevisionStatus::NEEDS_REVISION; 143 + $status_plan = ArcanistDifferentialRevisionStatus::CHANGES_PLANNED; 142 144 143 145 switch ($xaction->getTransactionType()) { 144 146 case PhabricatorTransactions::TYPE_VIEW_POLICY: ··· 169 171 $object->setStatus(ArcanistDifferentialRevisionStatus::ABANDONED); 170 172 return; 171 173 case DifferentialAction::ACTION_RETHINK: 172 - $object->setStatus($status_revision); 174 + $object->setStatus($status_plan); 173 175 return; 174 176 case DifferentialAction::ACTION_RECLAIM: 175 177 $object->setStatus($status_review); ··· 714 716 if (!$actor_is_author) { 715 717 return pht( 716 718 "You can not plan changes to this revision because you do not ". 717 - "own it. To plan chagnes to a revision, you must be its owner."); 719 + "own it. To plan changes to a revision, you must be its owner."); 718 720 } 719 721 720 722 switch ($revision_status) { ··· 722 724 case ArcanistDifferentialRevisionStatus::NEEDS_REVISION: 723 725 case ArcanistDifferentialRevisionStatus::NEEDS_REVIEW: 724 726 // These are OK. 727 + break; 728 + case ArcanistDifferentialRevisionStatus::CHANGES_PLANNED: 729 + // Let this through, it's a no-op. 725 730 break; 726 731 case ArcanistDifferentialRevisionStatus::ABANDONED: 727 732 return pht( ··· 752 757 switch ($revision_status) { 753 758 case ArcanistDifferentialRevisionStatus::ACCEPTED: 754 759 case ArcanistDifferentialRevisionStatus::NEEDS_REVISION: 760 + case ArcanistDifferentialRevisionStatus::CHANGES_PLANNED: 755 761 // These are OK. 756 762 break; 757 763 case ArcanistDifferentialRevisionStatus::NEEDS_REVIEW:
+1
src/applications/differential/view/DifferentialRevisionListView.php
··· 182 182 case ArcanistDifferentialRevisionStatus::NEEDS_REVIEW: 183 183 break; 184 184 case ArcanistDifferentialRevisionStatus::NEEDS_REVISION: 185 + case ArcanistDifferentialRevisionStatus::CHANGES_PLANNED: 185 186 $item->setBarColor('red'); 186 187 break; 187 188 case ArcanistDifferentialRevisionStatus::ACCEPTED: