Page MenuHomePhabricator

D12634.id30332.diff
No OneTemporary

D12634.id30332.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -433,6 +433,7 @@
'DifferentialRevisionMailReceiver' => 'applications/differential/mail/DifferentialRevisionMailReceiver.php',
'DifferentialRevisionPHIDType' => 'applications/differential/phid/DifferentialRevisionPHIDType.php',
'DifferentialRevisionQuery' => 'applications/differential/query/DifferentialRevisionQuery.php',
+ 'DifferentialRevisionRevertedByCommitEdgeType' => 'applications/differential/edge/DifferentialRevisionRevertedByCommitEdgeType.php',
'DifferentialRevisionSearchEngine' => 'applications/differential/query/DifferentialRevisionSearchEngine.php',
'DifferentialRevisionStatus' => 'applications/differential/constants/DifferentialRevisionStatus.php',
'DifferentialRevisionUpdateHistoryView' => 'applications/differential/view/DifferentialRevisionUpdateHistoryView.php',
@@ -487,6 +488,8 @@
'DiffusionCommitRemarkupRuleTestCase' => 'applications/diffusion/remarkup/__tests__/DiffusionCommitRemarkupRuleTestCase.php',
'DiffusionCommitRevertedByCommitEdgeType' => 'applications/diffusion/edge/DiffusionCommitRevertedByCommitEdgeType.php',
'DiffusionCommitRevertsCommitEdgeType' => 'applications/diffusion/edge/DiffusionCommitRevertsCommitEdgeType.php',
+ 'DiffusionCommitRevertsRevisionEdgeType' => 'applications/diffusion/edge/DiffusionCommitRevertsRevisionEdgeType.php',
+ 'DiffusionCommitRevertsTasksEdgeType' => 'applications/diffusion/edge/DiffusionCommitRevertsTasksEdgeType.php',
'DiffusionCommitTagsController' => 'applications/diffusion/controller/DiffusionCommitTagsController.php',
'DiffusionConduitAPIMethod' => 'applications/diffusion/conduit/DiffusionConduitAPIMethod.php',
'DiffusionController' => 'applications/diffusion/controller/DiffusionController.php',
@@ -1060,6 +1063,7 @@
'ManiphestTaskPriorityDatasource' => 'applications/maniphest/typeahead/ManiphestTaskPriorityDatasource.php',
'ManiphestTaskQuery' => 'applications/maniphest/query/ManiphestTaskQuery.php',
'ManiphestTaskResultListView' => 'applications/maniphest/view/ManiphestTaskResultListView.php',
+ 'ManiphestTaskRevertedByCommitEdgeType' => 'applications/maniphest/edge/ManiphestTaskRevertedByCommitEdgeType.php',
'ManiphestTaskSearchEngine' => 'applications/maniphest/query/ManiphestTaskSearchEngine.php',
'ManiphestTaskStatus' => 'applications/maniphest/constants/ManiphestTaskStatus.php',
'ManiphestTaskStatusDatasource' => 'applications/maniphest/typeahead/ManiphestTaskStatusDatasource.php',
@@ -3662,6 +3666,7 @@
'DifferentialRevisionMailReceiver' => 'PhabricatorObjectMailReceiver',
'DifferentialRevisionPHIDType' => 'PhabricatorPHIDType',
'DifferentialRevisionQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
+ 'DifferentialRevisionRevertedByCommitEdgeType' => 'PhabricatorEdgeType',
'DifferentialRevisionSearchEngine' => 'PhabricatorApplicationSearchEngine',
'DifferentialRevisionUpdateHistoryView' => 'AphrontView',
'DifferentialRevisionViewController' => 'DifferentialController',
@@ -3712,6 +3717,8 @@
'DiffusionCommitRemarkupRuleTestCase' => 'PhabricatorTestCase',
'DiffusionCommitRevertedByCommitEdgeType' => 'PhabricatorEdgeType',
'DiffusionCommitRevertsCommitEdgeType' => 'PhabricatorEdgeType',
+ 'DiffusionCommitRevertsRevisionEdgeType' => 'PhabricatorEdgeType',
+ 'DiffusionCommitRevertsTasksEdgeType' => 'PhabricatorEdgeType',
'DiffusionCommitTagsController' => 'DiffusionController',
'DiffusionConduitAPIMethod' => 'ConduitAPIMethod',
'DiffusionController' => 'PhabricatorController',
@@ -4360,6 +4367,7 @@
'ManiphestTaskPriorityDatasource' => 'PhabricatorTypeaheadDatasource',
'ManiphestTaskQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'ManiphestTaskResultListView' => 'ManiphestView',
+ 'ManiphestTaskRevertedByCommitEdgeType' => 'PhabricatorEdgeType',
'ManiphestTaskSearchEngine' => 'PhabricatorApplicationSearchEngine',
'ManiphestTaskStatus' => 'ManiphestConstants',
'ManiphestTaskStatusDatasource' => 'PhabricatorTypeaheadDatasource',
diff --git a/src/applications/differential/edge/DifferentialRevisionRevertedByCommitEdgeType.php b/src/applications/differential/edge/DifferentialRevisionRevertedByCommitEdgeType.php
new file mode 100644
--- /dev/null
+++ b/src/applications/differential/edge/DifferentialRevisionRevertedByCommitEdgeType.php
@@ -0,0 +1,103 @@
+<?php
+
+final class DifferentialRevisionRevertedByCommitEdgeType
+ extends PhabricatorEdgeType {
+
+ const EDGECONST = 58;
+
+ public function getInverseEdgeConstant() {
+ return DiffusionCommitRevertsRevisionEdgeType::EDGECONST;
+ }
+
+ public function shouldWriteInverseTransactions() {
+ return true;
+ }
+
+ public function getTransactionAddString(
+ $actor,
+ $add_count,
+ $add_edges) {
+
+ return pht(
+ '%s added %s commit(s): %s.',
+ $actor,
+ $add_count,
+ $add_edges);
+ }
+
+ public function getTransactionRemoveString(
+ $actor,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s removed %s commit(s): %s.',
+ $actor,
+ $rem_count,
+ $rem_edges);
+ }
+
+ public function getTransactionEditString(
+ $actor,
+ $total_count,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s edited commit(s), added %s: %s; removed %s: %s.',
+ $actor,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges);
+ }
+
+ public function getFeedAddString(
+ $actor,
+ $object,
+ $add_count,
+ $add_edges) {
+
+ return pht(
+ '%s added %s commit(s) for %s: %s.',
+ $actor,
+ $add_count,
+ $object,
+ $add_edges);
+ }
+
+ public function getFeedRemoveString(
+ $actor,
+ $object,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s removed %s commit(s) for %s: %s.',
+ $actor,
+ $rem_count,
+ $object,
+ $rem_edges);
+ }
+
+ public function getFeedEditString(
+ $actor,
+ $object,
+ $total_count,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s edited commit(s) for %s, added %s: %s; removed %s: %s.',
+ $actor,
+ $object,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges);
+ }
+}
diff --git a/src/applications/diffusion/edge/DiffusionCommitRevertsRevisionEdgeType.php b/src/applications/diffusion/edge/DiffusionCommitRevertsRevisionEdgeType.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/edge/DiffusionCommitRevertsRevisionEdgeType.php
@@ -0,0 +1,107 @@
+<?php
+
+final class DiffusionCommitRevertsRevisionEdgeType extends PhabricatorEdgeType {
+
+ const EDGECONST = 57;
+
+ public function getInverseEdgeConstant() {
+ return DifferentialRevisionRevertedByCommitEdgeType::EDGECONST;
+ }
+
+ public function shouldWriteInverseTransactions() {
+ return true;
+ }
+
+ public function shouldPreventCycles() {
+ return true;
+ }
+
+ public function getTransactionAddString(
+ $actor,
+ $add_count,
+ $add_edges) {
+
+ return pht(
+ '%s added %s reverting commit(s): %s.',
+ $actor,
+ $add_count,
+ $add_edges);
+ }
+
+ public function getTransactionRemoveString(
+ $actor,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s removed %s reverting commit(s): %s.',
+ $actor,
+ $rem_count,
+ $rem_edges);
+ }
+
+ public function getTransactionEditString(
+ $actor,
+ $total_count,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s edited reverting commit(s), added %s: %s; removed %s: %s.',
+ $actor,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges);
+ }
+
+ public function getFeedAddString(
+ $actor,
+ $object,
+ $add_count,
+ $add_edges) {
+
+ return pht(
+ '%s added %s reverting commit(s) for %s: %s.',
+ $actor,
+ $add_count,
+ $object,
+ $add_edges);
+ }
+
+ public function getFeedRemoveString(
+ $actor,
+ $object,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s removed %s reverting commit(s) for %s: %s.',
+ $actor,
+ $rem_count,
+ $object,
+ $rem_edges);
+ }
+
+ public function getFeedEditString(
+ $actor,
+ $object,
+ $total_count,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s edited reverting commit(s) for %s, added %s: %s; removed %s: %s.',
+ $actor,
+ $object,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges);
+ }
+
+}
diff --git a/src/applications/diffusion/edge/DiffusionCommitRevertsTasksEdgeType.php b/src/applications/diffusion/edge/DiffusionCommitRevertsTasksEdgeType.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/edge/DiffusionCommitRevertsTasksEdgeType.php
@@ -0,0 +1,107 @@
+<?php
+
+final class DiffusionCommitRevertsTasksEdgeType extends PhabricatorEdgeType {
+
+ const EDGECONST = 59;
+
+ public function getInverseEdgeConstant() {
+ return ManiphestTaskRevertedByCommitEdgeType::EDGECONST;
+ }
+
+ public function shouldWriteInverseTransactions() {
+ return true;
+ }
+
+ public function shouldPreventCycles() {
+ return true;
+ }
+
+ public function getTransactionAddString(
+ $actor,
+ $add_count,
+ $add_edges) {
+
+ return pht(
+ '%s added %s reverting commit(s): %s.',
+ $actor,
+ $add_count,
+ $add_edges);
+ }
+
+ public function getTransactionRemoveString(
+ $actor,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s removed %s reverting commit(s): %s.',
+ $actor,
+ $rem_count,
+ $rem_edges);
+ }
+
+ public function getTransactionEditString(
+ $actor,
+ $total_count,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s edited reverting commit(s), added %s: %s; removed %s: %s.',
+ $actor,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges);
+ }
+
+ public function getFeedAddString(
+ $actor,
+ $object,
+ $add_count,
+ $add_edges) {
+
+ return pht(
+ '%s added %s reverting commit(s) for %s: %s.',
+ $actor,
+ $add_count,
+ $object,
+ $add_edges);
+ }
+
+ public function getFeedRemoveString(
+ $actor,
+ $object,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s removed %s reverting commit(s) for %s: %s.',
+ $actor,
+ $rem_count,
+ $object,
+ $rem_edges);
+ }
+
+ public function getFeedEditString(
+ $actor,
+ $object,
+ $total_count,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s edited reverting commit(s) for %s, added %s: %s; removed %s: %s.',
+ $actor,
+ $object,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges);
+ }
+
+}
diff --git a/src/applications/maniphest/edge/ManiphestTaskRevertedByCommitEdgeType.php b/src/applications/maniphest/edge/ManiphestTaskRevertedByCommitEdgeType.php
new file mode 100644
--- /dev/null
+++ b/src/applications/maniphest/edge/ManiphestTaskRevertedByCommitEdgeType.php
@@ -0,0 +1,105 @@
+<?php
+
+final class ManiphestTaskRevertedByCommitEdgeType extends PhabricatorEdgeType {
+
+ const EDGECONST = 60;
+
+ public function shouldWriteInverseTransactions() {
+ return true;
+ }
+
+ public function getInverseEdgeConstant() {
+ return DiffusionCommitRevertsTasksEdgeType::EDGECONST;
+ }
+
+ public function getTransactionAddString(
+ $actor,
+ $add_count,
+ $add_edges) {
+
+ return pht(
+ '%s added %s reverting commit(s): %s.',
+ $actor,
+ $add_count,
+ $add_edges);
+ }
+
+ public function getTransactionRemoveString(
+ $actor,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s removed %s reverting commit(s): %s.',
+ $actor,
+ $rem_count,
+ $rem_edges);
+ }
+
+ public function getTransactionEditString(
+ $actor,
+ $total_count,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s edited %s reverting commit(s), added %s: %s; removed %s: %s.',
+ $actor,
+ $total_count,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges);
+ }
+
+ public function getFeedAddString(
+ $actor,
+ $object,
+ $add_count,
+ $add_edges) {
+
+ return pht(
+ '%s added %s reverting commit(s) to %s: %s.',
+ $actor,
+ $add_count,
+ $object,
+ $add_edges);
+ }
+
+ public function getFeedRemoveString(
+ $actor,
+ $object,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s removed %s reverting commit(s) from %s: %s.',
+ $actor,
+ $rem_count,
+ $object,
+ $rem_edges);
+ }
+
+ public function getFeedEditString(
+ $actor,
+ $object,
+ $total_count,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges) {
+
+ return pht(
+ '%s edited %s reverting commit(s) for %s, added %s: %s; removed %s: %s.',
+ $actor,
+ $total_count,
+ $object,
+ $add_count,
+ $add_edges,
+ $rem_count,
+ $rem_edges);
+ }
+
+}
diff --git a/src/applications/repository/worker/PhabricatorRepositoryCommitHeraldWorker.php b/src/applications/repository/worker/PhabricatorRepositoryCommitHeraldWorker.php
--- a/src/applications/repository/worker/PhabricatorRepositoryCommitHeraldWorker.php
+++ b/src/applications/repository/worker/PhabricatorRepositoryCommitHeraldWorker.php
@@ -81,6 +81,35 @@
->setTransactionType(PhabricatorTransactions::TYPE_EDGE)
->setMetadataValue('edge:type', $reverts_edge)
->setNewValue(array('+' => array_fuse($reverted_commit_phids)));
+
+ $commit_data = id(new PhabricatorRepositoryCommitData())->loadOneWhere(
+ 'commitID = %d',
+ $commit->getID());
+
+ $differential_app = 'PhabricatorDifferentialApplication';
+ if (PhabricatorApplication::isClassInstalled($differential_app)) {
+ $revision_id = $commit->getCommitDetail('differential.revisionID');
+
+ if ($revision_id) {
+ $revision_query = id(new DifferentialRevisionQuery())
+ ->setViewer(PhabricatorUser::getOmnipotentUser())
+ ->withIDs(array($revision_id));
+ $revision = $revision_query->executeOne();
+
+ if ($revision) {
+ // TODO: Use DifferentialTransactionEditor.
+ $edge = DiffusionCommitRevertsRevisionEdgeType::EDGECONST;
+ id(new PhabricatorEdgeEditor())
+ ->addEdge($commit->getPHID(), $edge, $revision->getPHID())
+ ->save();
+ }
+ }
+ }
+
+ // TODO: Add DiffusionCommitRevertsTasksEdgeType edge.
+
+ // TODO: Maybe re-open Maniphest Task.
+
}
try {
diff --git a/src/applications/repository/worker/commitmessageparser/PhabricatorRepositoryCommitMessageParserWorker.php b/src/applications/repository/worker/commitmessageparser/PhabricatorRepositoryCommitMessageParserWorker.php
--- a/src/applications/repository/worker/commitmessageparser/PhabricatorRepositoryCommitMessageParserWorker.php
+++ b/src/applications/repository/worker/commitmessageparser/PhabricatorRepositoryCommitMessageParserWorker.php
@@ -169,6 +169,8 @@
'precommitRevisionStatus',
$revision->getStatus());
}
+
+ // TODO: Use DifferentialTransactionEditor.
$commit_drev = DiffusionCommitHasRevisionEdgeType::EDGECONST;
id(new PhabricatorEdgeEditor())
->addEdge($commit->getPHID(), $commit_drev, $revision->getPHID())

File Metadata

Mime Type
text/plain
Expires
Wed, Mar 5, 5:27 AM (2 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7223640
Default Alt Text
D12634.id30332.diff (15 KB)

Event Timeline