@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.

Use `PhabricatorAuditEditor` to write revert edges

Summary: Use `PhabricatorAuditEditor` instead of `PhabricatorEdgeEditor` when writing reverts edges. This ensures that a transaction is created in addition to the edge.

Test Plan: Reverted a commit and pushed to remote. Saw a row created in `phabricator_audit.audit_transaction_comment`. Interestingly, I can't actually see the transaction at http://phabricator.local/r${CALLSIGN}${REVERTED_COMMIT_HASH}.

Reviewers: epriestley, #blessed_reviewers

Reviewed By: epriestley, #blessed_reviewers

Subscribers: Korvin, epriestley

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

+234 -29
+88
src/applications/diffusion/edge/DiffusionCommitRevertedByCommitEdgeType.php
··· 13 13 return true; 14 14 } 15 15 16 + public function getTransactionAddString( 17 + $actor, 18 + $add_count, 19 + $add_edges) { 20 + 21 + return pht( 22 + '%s added %s reverted commit(s): %s.', 23 + $actor, 24 + $add_count, 25 + $add_edges); 26 + } 27 + 28 + public function getTransactionRemoveString( 29 + $actor, 30 + $rem_count, 31 + $rem_edges) { 32 + 33 + return pht( 34 + '%s removed %s reverted commit(s): %s.', 35 + $actor, 36 + $rem_count, 37 + $rem_edges); 38 + } 39 + 40 + public function getTransactionEditString( 41 + $actor, 42 + $total_count, 43 + $add_count, 44 + $add_edges, 45 + $rem_count, 46 + $rem_edges) { 47 + 48 + return pht( 49 + '%s edited reverted commit(s), added %s: %s; removed %s: %s.', 50 + $actor, 51 + $add_count, 52 + $add_edges, 53 + $rem_count, 54 + $rem_edges); 55 + } 56 + 57 + public function getFeedAddString( 58 + $actor, 59 + $object, 60 + $add_count, 61 + $add_edges) { 62 + 63 + return pht( 64 + '%s added %s reverted commit(s) for %s: %s.', 65 + $actor, 66 + $add_count, 67 + $object, 68 + $add_edges); 69 + } 70 + 71 + public function getFeedRemoveString( 72 + $actor, 73 + $object, 74 + $rem_count, 75 + $rem_edges) { 76 + 77 + return pht( 78 + '%s removed %s reverted commit(s) for %s: %s.', 79 + $actor, 80 + $rem_count, 81 + $object, 82 + $rem_edges); 83 + } 84 + 85 + public function getFeedEditString( 86 + $actor, 87 + $object, 88 + $total_count, 89 + $add_count, 90 + $add_edges, 91 + $rem_count, 92 + $rem_edges) { 93 + 94 + return pht( 95 + '%s edited reverted commit(s) for %s, added %s: %s; removed %s: %s.', 96 + $actor, 97 + $object, 98 + $add_count, 99 + $add_edges, 100 + $rem_count, 101 + $rem_edges); 102 + } 103 + 16 104 }
+88
src/applications/diffusion/edge/DiffusionCommitRevertsCommitEdgeType.php
··· 16 16 return true; 17 17 } 18 18 19 + public function getTransactionAddString( 20 + $actor, 21 + $add_count, 22 + $add_edges) { 23 + 24 + return pht( 25 + '%s added %s reverting commit(s): %s.', 26 + $actor, 27 + $add_count, 28 + $add_edges); 29 + } 30 + 31 + public function getTransactionRemoveString( 32 + $actor, 33 + $rem_count, 34 + $rem_edges) { 35 + 36 + return pht( 37 + '%s removed %s reverting commit(s): %s.', 38 + $actor, 39 + $rem_count, 40 + $rem_edges); 41 + } 42 + 43 + public function getTransactionEditString( 44 + $actor, 45 + $total_count, 46 + $add_count, 47 + $add_edges, 48 + $rem_count, 49 + $rem_edges) { 50 + 51 + return pht( 52 + '%s edited reverting commit(s), added %s: %s; removed %s: %s.', 53 + $actor, 54 + $add_count, 55 + $add_edges, 56 + $rem_count, 57 + $rem_edges); 58 + } 59 + 60 + public function getFeedAddString( 61 + $actor, 62 + $object, 63 + $add_count, 64 + $add_edges) { 65 + 66 + return pht( 67 + '%s added %s reverting commit(s) for %s: %s.', 68 + $actor, 69 + $add_count, 70 + $object, 71 + $add_edges); 72 + } 73 + 74 + public function getFeedRemoveString( 75 + $actor, 76 + $object, 77 + $rem_count, 78 + $rem_edges) { 79 + 80 + return pht( 81 + '%s removed %s reverting commit(s) for %s: %s.', 82 + $actor, 83 + $rem_count, 84 + $object, 85 + $rem_edges); 86 + } 87 + 88 + public function getFeedEditString( 89 + $actor, 90 + $object, 91 + $total_count, 92 + $add_count, 93 + $add_edges, 94 + $rem_count, 95 + $rem_edges) { 96 + 97 + return pht( 98 + '%s edited reverting commit(s) for %s, added %s: %s; removed %s: %s.', 99 + $actor, 100 + $object, 101 + $add_count, 102 + $add_edges, 103 + $rem_count, 104 + $rem_edges); 105 + } 106 + 19 107 }
+24
src/applications/repository/worker/PhabricatorRepositoryCommitHeraldWorker.php
··· 59 59 'committerName' => $data->getCommitDetail('committer'), 60 60 'committerPHID' => $data->getCommitDetail('committerPHID'), 61 61 )); 62 + 63 + $reverts_refs = id(new DifferentialCustomFieldRevertsParser()) 64 + ->parseCorpus($data->getCommitMessage()); 65 + $reverts = array_mergev(ipull($reverts_refs, 'monograms')); 66 + 67 + if ($reverts) { 68 + $reverted_commits = id(new DiffusionCommitQuery()) 69 + ->setViewer(PhabricatorUser::getOmnipotentUser()) 70 + ->withIdentifiers($reverts) 71 + ->execute(); 72 + $reverted_commit_phids = mpull($reverted_commits, 'getPHID', 'getPHID'); 73 + 74 + // NOTE: Skip any write attempts if a user cleverly implies a commit 75 + // reverts itself. 76 + unset($reverted_commit_phids[$commit->getPHID()]); 77 + 78 + $reverts_edge = DiffusionCommitRevertsCommitEdgeType::EDGECONST; 79 + $xactions[] = id(new PhabricatorAuditTransaction()) 80 + ->setTransactionType(PhabricatorTransactions::TYPE_EDGE) 81 + ->setMetadataValue('edge:type', $reverts_edge) 82 + ->setNewValue(array('+' => array_fuse($reverted_commit_phids))); 83 + } 84 + 62 85 try { 63 86 $raw_patch = $this->loadRawPatchText($repository, $commit); 64 87 } catch (Exception $ex) { 65 88 $raw_patch = pht('Unable to generate patch: %s', $ex->getMessage()); 66 89 } 67 90 $editor->setRawPatch($raw_patch); 91 + 68 92 return $editor->applyTransactions($commit, $xactions); 69 93 } 70 94
-29
src/applications/repository/worker/commitmessageparser/PhabricatorRepositoryCommitMessageParserWorker.php
··· 102 102 103 103 $conn_w = id(new DifferentialRevision())->establishConnection('w'); 104 104 105 - $reverts_refs = id(new DifferentialCustomFieldRevertsParser()) 106 - ->parseCorpus($message); 107 - $reverts = array_mergev(ipull($reverts_refs, 'monograms')); 108 - 109 - if ($reverts) { 110 - $reverted_commits = id(new DiffusionCommitQuery()) 111 - ->setViewer($actor) 112 - ->withIdentifiers($reverts) 113 - ->execute(); 114 - $reverted_commit_phids = mpull($reverted_commits, 'getPHID', 'getPHID'); 115 - 116 - // NOTE: Skip any write attempts if a user cleverly implies a commit 117 - // reverts itself. 118 - unset($reverted_commit_phids[$commit->getPHID()]); 119 - 120 - $editor = new PhabricatorEdgeEditor(); 121 - foreach ($reverted_commit_phids as $commit_phid) { 122 - try { 123 - $editor->addEdge( 124 - $commit->getPHID(), 125 - DiffusionCommitRevertsCommitEdgeType::EDGECONST, 126 - $commit_phid); 127 - } catch (PhabricatorEdgeCycleException $ex) { 128 - continue; 129 - } 130 - } 131 - $editor->save(); 132 - } 133 - 134 105 // NOTE: The `differential_commit` table has a unique ID on `commitPHID`, 135 106 // preventing more than one revision from being associated with a commit. 136 107 // Generally this is good and desirable, but with the advent of hash
+34
src/infrastructure/internationalization/translation/PhabricatorBaseEnglishTranslation.php
··· 600 600 '%s edited commit(s), added %s: %s; removed %s: %s.' => 601 601 '%s edited commits, added %3$s; removed %5$s.', 602 602 603 + '%s added %s reverted commit(s): %s.' => array( 604 + array( 605 + '%s added a reverted commit: %3$s.', 606 + '%s added reverted commits: %3$s.', 607 + ), 608 + ), 609 + 610 + '%s removed %s reverted commit(s): %s.' => array( 611 + array( 612 + '%s removed a reverted commit: %3$s.', 613 + '%s removed reverted commits: %3$s.', 614 + ), 615 + ), 616 + 617 + '%s edited reverted commit(s), added %s: %s; removed %s: %s.' => 618 + '%s edited reverted commits, added %3$s; removed %5$s.', 619 + 620 + '%s added %s reverting commit(s): %s.' => array( 621 + array( 622 + '%s added a reverting commit: %3$s.', 623 + '%s added reverting commits: %3$s.', 624 + ), 625 + ), 626 + 627 + '%s removed %s reverting commit(s): %s.' => array( 628 + array( 629 + '%s removed a reverting commit: %3$s.', 630 + '%s removed reverting commits: %3$s.', 631 + ), 632 + ), 633 + 634 + '%s edited reverting commit(s), added %s: %s; removed %s: %s.' => 635 + '%s edited reverting commits, added %3$s; removed %5$s.', 636 + 603 637 '%s changed project member(s), added %d: %s; removed %d: %s.' => 604 638 '%s changed project members, added %3$s; removed %5$s.', 605 639