mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-12 00:26:13 +01:00
2e36653965
Summary: Ref T2543. These are currently numeric values, like "0" and "3". I want to replace them with strings, like "accepted", and move definitions from Arcanist to Phabricator. To set the stage for this, reduce the number of callsites where Phabricator invokes `ArcanistDifferentialRevisionStatus`. This is just the easy ones. I'll hold this until the release cut. Test Plan: - Called `differential.find`. - Called `differential.getrevision`. - Called `differential.query`. - Removed all reviewers from a revision, saw warning. - Abandoned the no-reviewers revision, no more warning. - Attached a revision to a task to get it to show the state icon with the status on a tooltip. - Viewed revision bucketing on dashboard. - Used `bin/search index` to reindex a revision. - Hit the "Land Revision" endpoint. I didn't explicitly test these cases: - Doorkeeper Asana integration, since setup takes a thousand years. - Disambiguation logic when multiple hashes match, since setup is also very involved. - Releeph because it's Releeph. Reviewers: chad Reviewed By: chad Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam Maniphest Tasks: T2543 Differential Revision: https://secure.phabricator.com/D18339
97 lines
2.3 KiB
PHP
97 lines
2.3 KiB
PHP
<?php
|
|
|
|
final class DifferentialBranchField
|
|
extends DifferentialCustomField {
|
|
|
|
public function getFieldKey() {
|
|
return 'differential:branch';
|
|
}
|
|
|
|
public function getFieldName() {
|
|
return pht('Branch');
|
|
}
|
|
|
|
public function getFieldDescription() {
|
|
return pht('Shows the branch a diff came from.');
|
|
}
|
|
|
|
public function shouldAppearInPropertyView() {
|
|
return true;
|
|
}
|
|
|
|
public function renderPropertyViewValue(array $handles) {
|
|
return null;
|
|
}
|
|
|
|
public function shouldAppearInDiffPropertyView() {
|
|
return true;
|
|
}
|
|
|
|
public function renderDiffPropertyViewLabel(DifferentialDiff $diff) {
|
|
return $this->getFieldName();
|
|
}
|
|
|
|
public function renderDiffPropertyViewValue(DifferentialDiff $diff) {
|
|
return $this->getBranchDescription($diff);
|
|
}
|
|
|
|
private function getBranchDescription(DifferentialDiff $diff) {
|
|
$branch = $diff->getBranch();
|
|
$bookmark = $diff->getBookmark();
|
|
|
|
if (strlen($branch) && strlen($bookmark)) {
|
|
return pht('%s (bookmark) on %s (branch)', $bookmark, $branch);
|
|
} else if (strlen($bookmark)) {
|
|
return pht('%s (bookmark)', $bookmark);
|
|
} else if (strlen($branch)) {
|
|
$onto = $diff->loadTargetBranch();
|
|
if (strlen($onto) && ($onto !== $branch)) {
|
|
return pht(
|
|
'%s (branched from %s)',
|
|
$branch,
|
|
$onto);
|
|
} else {
|
|
return $branch;
|
|
}
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public function getProTips() {
|
|
return array(
|
|
pht(
|
|
'In Git and Mercurial, use a branch like "%s" to automatically '.
|
|
'associate changes with the corresponding task.',
|
|
'T123'),
|
|
);
|
|
}
|
|
|
|
public function shouldAppearInTransactionMail() {
|
|
return true;
|
|
}
|
|
|
|
public function updateTransactionMailBody(
|
|
PhabricatorMetaMTAMailBody $body,
|
|
PhabricatorApplicationTransactionEditor $editor,
|
|
array $xactions) {
|
|
|
|
$revision = $this->getObject();
|
|
|
|
// Show the "BRANCH" section only if there's a new diff or the revision
|
|
// is "Accepted".
|
|
$is_update = (bool)$editor->getDiffUpdateTransaction($xactions);
|
|
$is_accepted = $revision->isAccepted();
|
|
if (!$is_update && !$is_accepted) {
|
|
return;
|
|
}
|
|
|
|
$branch = $this->getBranchDescription($revision->getActiveDiff());
|
|
if ($branch === null) {
|
|
return;
|
|
}
|
|
|
|
$body->addTextSection(pht('BRANCH'), $branch);
|
|
}
|
|
|
|
}
|