1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-02-05 03:18:25 +01:00

Update DifferentialDiff: add repositoryPHID, drop parentRevisionID

Summary:
Moves away from ArcanistProjects:

  - Adds storage for diffs to be directly associated with a repository (instead of indirectly, through arcanist projects). Not really populated yet.
  - Drops `parentRevisionID`, which is obsoleted by the "Depends On" edge. This is not exposed in the UI anywhere and doesn't do anything. Resolves TODO.

Test Plan: Ran storage upgrades, browsed around, lots of `grep`.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Differential Revision: https://secure.phabricator.com/D8072
This commit is contained in:
epriestley 2014-01-26 15:29:22 -08:00
parent 756792caf5
commit 014a873773
5 changed files with 32 additions and 25 deletions

View file

@ -0,0 +1,2 @@
ALTER TABLE {$NAMESPACE}_differential.differential_diff
DROP COLUMN parentRevisionID;

View file

@ -0,0 +1,2 @@
ALTER TABLE {$NAMESPACE}_differential.differential_diff
ADD COLUMN repositoryPHID VARCHAR(64) COLLATE utf8_bin AFTER authorPHID;

View file

@ -1,8 +1,5 @@
<?php
/**
* @group conduit
*/
final class ConduitAPI_differential_creatediff_Method extends ConduitAPIMethod {
public function getMethodDescription() {
@ -16,18 +13,20 @@ final class ConduitAPI_differential_creatediff_Method extends ConduitAPIMethod {
'sourcePath' => 'required string',
'branch' => 'required string',
'bookmark' => 'optional string',
'sourceControlSystem' => 'required enum<svn, git>',
'sourceControlSystem' => 'required enum<svn, git, hg>',
'sourceControlPath' => 'required string',
'sourceControlBaseRevision' => 'required string',
'parentRevisionID' => 'optional revisionid',
'creationMethod' => 'optional string',
'authorPHID' => 'optional phid',
'arcanistProject' => 'optional string',
'repositoryUUID' => 'optional string',
'lintStatus' =>
'required enum<none, skip, okay, warn, fail, postponed>',
'unitStatus' =>
'required enum<none, skip, okay, warn, fail, postponed>',
'repositoryPHID' => 'optional phid',
'parentRevisionID' => 'deprecated',
'authorPHID' => 'deprecated',
'repositoryUUID' => 'deprecated',
);
}
@ -54,23 +53,23 @@ final class ConduitAPI_differential_creatediff_Method extends ConduitAPIMethod {
$diff->setBranch($request->getValue('branch'));
$diff->setCreationMethod($request->getValue('creationMethod'));
$diff->setAuthorPHID($request->getValue('authorPHID'));
$diff->setAuthorPHID($request->getViewer()->getPHID());
$diff->setBookmark($request->getValue('bookmark'));
$parent_id = $request->getValue('parentRevisionID');
if ($parent_id) {
// NOTE: If the viewer can't see the parent revision, just don't set
// a parent revision ID. This isn't used for anything meaningful.
// TODO: Can we delete this entirely?
$parent_rev = id(new DifferentialRevisionQuery())
->setViewer($request->getUser())
->withIDs(array($parent_id))
->execute();
if ($parent_rev) {
$parent_rev = head($parent_rev);
if (!$parent_rev->isClosed()) {
$diff->setParentRevisionID($parent_id);
}
// TODO: Remove this eventually; for now continue writing the UUID. Note
// that we'll overwrite it below if we identify a repository, and `arc`
// no longer sends it. This stuff is retained for backward compatibility.
$diff->setRepositoryUUID($request->getValue('repositoryUUID'));
$repository_phid = $request->getValue('repositoryPHID');
if ($repository_phid) {
$repository = id(new PhabricatorRepositoryQuery())
->setViewer($request->getViewer())
->withPHIDs(array($repository_phid))
->executeOne();
if ($repository) {
$diff->setRepositoryPHID($repository->getPHID());
$diff->setRepositoryUUID($repository->getUUID());
}
}
@ -96,7 +95,6 @@ final class ConduitAPI_differential_creatediff_Method extends ConduitAPIMethod {
}
$diff->setArcanistProjectPHID($project_phid);
$diff->setRepositoryUUID($request->getValue('repositoryUUID'));
switch ($request->getValue('lintStatus')) {
case 'skip':

View file

@ -8,6 +8,7 @@ final class DifferentialDiff
protected $revisionID;
protected $authorPHID;
protected $repositoryPHID;
protected $sourceMachine;
protected $sourcePath;
@ -24,7 +25,6 @@ final class DifferentialDiff
protected $branch;
protected $bookmark;
protected $parentRevisionID;
protected $arcanistProjectPHID;
protected $creationMethod;
protected $repositoryUUID;
@ -223,7 +223,6 @@ final class DifferentialDiff
public function getDiffDict() {
$dict = array(
'id' => $this->getID(),
'parent' => $this->getParentRevisionID(),
'revisionID' => $this->getRevisionID(),
'dateCreated' => $this->getDateCreated(),
'dateModified' => $this->getDateModified(),

View file

@ -22,6 +22,7 @@ final class ConduitAPI_repository_query_Method
'callsigns' => 'optional list<string>',
'vcsTypes' => 'optional list<string>',
'remoteURIs' => 'optional list<string>',
'uuids' => 'optional list<string>',
);
}
@ -63,6 +64,11 @@ final class ConduitAPI_repository_query_Method
$query->withRemoteURIs($remote_uris);
}
$uuids = $request->getValue('uuids', array());
if ($uuids) {
$query->withUUIDs($uuids);
}
$repositories = $query->execute();
$results = array();