1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-28 16:30:59 +01:00

Convert differential.revisionPHID commit detail to edge

Summary: Migration doesn't delete differential.revisionPHID but maybe it should?

Test Plan: Reparsed commit, ran the migration, deleted differential.revisionPHID, looked at task with attached commit with attached revision.

Reviewers: epriestley, edward

Reviewed By: epriestley

CC: aran, Korvin, AnhNhan

Differential Revision: https://secure.phabricator.com/D5634
This commit is contained in:
Jakub Vrana 2013-04-12 22:48:16 -07:00
parent 4fb1a9e00f
commit e31e998f3b
9 changed files with 74 additions and 40 deletions

View file

@ -0,0 +1,33 @@
<?php
echo "Migrating differential.revisionPHID to edges...\n";
$commit_table = new PhabricatorRepositoryCommit();
$data_table = new PhabricatorRepositoryCommitData();
$editor = id(new PhabricatorEdgeEditor())->setSuppressEvents(true);
$commit_table->establishConnection('w');
$edges = 0;
foreach (new LiskMigrationIterator($commit_table) as $commit) {
$data = $commit->loadOneRelative($data_table, 'commitID');
if (!$data) {
continue;
}
$revision_phid = $data->getCommitDetail('differential.revisionPHID');
if (!$revision_phid) {
continue;
}
$commit_drev = PhabricatorEdgeConfig::TYPE_COMMIT_HAS_DREV;
$editor->addEdge($commit->getPHID(), $commit_drev, $revision_phid);
$edges++;
if ($edges % 256 == 0) {
echo ".";
$editor->save();
$editor = id(new PhabricatorEdgeEditor())->setSuppressEvents(true);
}
}
echo ".";
$editor->save();
echo "\nDone.\n";

View file

@ -364,7 +364,8 @@ final class DiffusionCommitController extends DiffusionController {
->withSourcePHIDs(array($commit_phid))
->withEdgeTypes(array(
PhabricatorEdgeConfig::TYPE_COMMIT_HAS_TASK,
PhabricatorEdgeConfig::TYPE_COMMIT_HAS_PROJECT
PhabricatorEdgeConfig::TYPE_COMMIT_HAS_PROJECT,
PhabricatorEdgeConfig::TYPE_COMMIT_HAS_DREV,
))
->execute();
@ -372,8 +373,10 @@ final class DiffusionCommitController extends DiffusionController {
$edges[$commit_phid][PhabricatorEdgeConfig::TYPE_COMMIT_HAS_TASK]);
$proj_phids = array_keys(
$edges[$commit_phid][PhabricatorEdgeConfig::TYPE_COMMIT_HAS_PROJECT]);
$revision_phid = key(
$edges[$commit_phid][PhabricatorEdgeConfig::TYPE_COMMIT_HAS_DREV]);
$phids = array_merge($task_phids, $proj_phids);
$phids = array_mergev($edges[$commit_phid]);
if ($data->getCommitDetail('authorPHID')) {
$phids[] = $data->getCommitDetail('authorPHID');
}
@ -383,9 +386,6 @@ final class DiffusionCommitController extends DiffusionController {
if ($data->getCommitDetail('committerPHID')) {
$phids[] = $data->getCommitDetail('committerPHID');
}
if ($data->getCommitDetail('differential.revisionPHID')) {
$phids[] = $data->getCommitDetail('differential.revisionPHID');
}
if ($parents) {
foreach ($parents as $parent) {
$phids[] = $parent->getPHID();
@ -432,7 +432,6 @@ final class DiffusionCommitController extends DiffusionController {
}
}
$revision_phid = $data->getCommitDetail('differential.revisionPHID');
if ($revision_phid) {
$props['Differential Revision'] = $handles[$revision_phid]->renderLink();
}

View file

@ -18,7 +18,6 @@ final class DiffusionHovercardEventListener extends PhutilEventListener {
$viewer = $event->getUser();
$hovercard = $event->getValue('hovercard');
$object_handle = $event->getValue('handle');
$phid = $object_handle->getPHID();
$commit = $event->getValue('object');
if (!($commit instanceof PhabricatorRepositoryCommit)) {
@ -26,7 +25,11 @@ final class DiffusionHovercardEventListener extends PhutilEventListener {
}
$commit_data = $commit->loadCommitData();
$revision = $commit_data->getCommitDetail('differential.revisionPHID');
$revision = PhabricatorEdgeQuery::loadDestinationPHIDs(
$commit->getPHID(),
PhabricatorEdgeConfig::TYPE_COMMIT_HAS_DREV);
$revision = reset($revision);
$author = $commit->getAuthorPHID();

View file

@ -502,26 +502,19 @@ final class ManiphestTaskDetailController extends ManiphestController {
$commit_phids = array_keys(
$edges[PhabricatorEdgeConfig::TYPE_TASK_HAS_COMMIT]);
if ($commit_phids) {
$commits = id(new PhabricatorRepositoryCommit())
->putInSet(new LiskDAOSet())
->loadAllWhere('phid IN (%Ls)', $commit_phids);
$commit_drev = PhabricatorEdgeConfig::TYPE_COMMIT_HAS_DREV;
$drev_edges = id(new PhabricatorEdgeQuery())
->withSourcePHIDs($commit_phids)
->withEdgeTypes(array($commit_drev))
->execute();
foreach ($commits as $commit) {
$phid = $commit->getPHID();
foreach ($commit_phids as $phid) {
$revisions_commits[$phid] = $handles[$phid]->renderLink();
$data = $commit->loadOneRelative(
new PhabricatorRepositoryCommitData(),
'commitID');
$revision_phid = ($data
? $data->getCommitDetail('differential.revisionPHID')
: null);
$revision_phid = key($drev_edges[$phid][$commit_drev]);
$revision_handle = idx($handles, $revision_phid);
if ($revision_handle) {
$has_drev = PhabricatorEdgeConfig::TYPE_TASK_HAS_RELATED_DREV;
unset($edges[$has_drev][$revision_phid]);
$task_drev = PhabricatorEdgeConfig::TYPE_TASK_HAS_RELATED_DREV;
unset($edges[$task_drev][$revision_phid]);
$revisions_commits[$phid] = hsprintf(
'%s / %s',
$revision_handle->renderLink($revision_handle->getName()),

View file

@ -8,14 +8,9 @@ final class ReleephRevisionFieldSpecification
}
public function renderValueForHeaderView() {
$data = $this
$phid = $this
->getReleephRequest()
->loadPhabricatorRepositoryCommitData();
if (!$data) {
return null;
}
$phid = $data->getCommitDetail('differential.revisionPHID');
->loadRequestCommitDiffPHID();
if (!$phid) {
return null;
}

View file

@ -228,11 +228,10 @@ final class ReleephRequest extends ReleephDAO {
}
public function loadRequestCommitDiffPHID() {
$commit_data = $this->loadPhabricatorRepositoryCommitData();
if (!$commit_data) {
return null;
}
return $commit_data->getCommitDetail('differential.revisionPHID');
$revision_phid = PhabricatorEdgeQuery::loadDestinationPHIDs(
$this->getRequestCommitPHID(),
PhabricatorEdgeConfig::TYPE_COMMIT_HAS_DREV);
return reset($revision_phid);
}

View file

@ -118,9 +118,11 @@ abstract class PhabricatorRepositoryCommitMessageParserWorker
$revision = id(new DifferentialRevision())->load($revision_id);
if ($revision) {
$data->setCommitDetail(
'differential.revisionPHID',
$revision->getPHID());
$commit_drev = PhabricatorEdgeConfig::TYPE_COMMIT_HAS_DREV;
id(new PhabricatorEdgeEditor())
->setActor($user)
->addEdge($commit->getPHID(), $commit_drev, $revision->getPHID())
->save();
$revision->loadRelationships();
queryfx(

View file

@ -48,6 +48,9 @@ final class PhabricatorEdgeConfig extends PhabricatorEdgeConstants {
const TYPE_PURCAHSE_HAS_CHARGE = 29;
const TYPE_CHARGE_HAS_PURCHASE = 30;
const TYPE_DREV_HAS_COMMIT = 31;
const TYPE_COMMIT_HAS_DREV = 32;
const TYPE_TEST_NO_CYCLE = 9000;
@ -94,6 +97,9 @@ final class PhabricatorEdgeConfig extends PhabricatorEdgeConstants {
self::TYPE_ACCOUNT_HAS_MEMBER => self::TYPE_MEMBER_HAS_ACCOUNT,
self::TYPE_MEMBER_HAS_ACCOUNT => self::TYPE_ACCOUNT_HAS_MEMBER,
self::TYPE_DREV_HAS_COMMIT => self::TYPE_COMMIT_HAS_DREV,
self::TYPE_COMMIT_HAS_DREV => self::TYPE_DREV_HAS_COMMIT,
);
return idx($map, $edge_type);

View file

@ -1233,7 +1233,11 @@ final class PhabricatorBuiltinPatchList extends PhabricatorSQLPatchList {
'20130403.conpherencecachemig.php' => array(
'type' => 'php',
'name' => $this->getPatchPath('20130403.conpherencecachemig.php'),
)
),
'20130409.commitdrev.php' => array(
'type' => 'php',
'name' => $this->getPatchPath('20130409.commitdrev.php'),
),
);
}
}