Index: resources/sql/autopatches/20140126.diff.1.parentrevisionid.sql =================================================================== --- /dev/null +++ resources/sql/autopatches/20140126.diff.1.parentrevisionid.sql @@ -0,0 +1,2 @@ +ALTER TABLE {$NAMESPACE}_differential.differential_diff + DROP COLUMN parentRevisionID; Index: resources/sql/autopatches/20140126.diff.2.repositoryphid.sql =================================================================== --- /dev/null +++ resources/sql/autopatches/20140126.diff.2.repositoryphid.sql @@ -0,0 +1,2 @@ +ALTER TABLE {$NAMESPACE}_differential.differential_diff + ADD COLUMN repositoryPHID VARCHAR(64) COLLATE utf8_bin AFTER authorPHID; Index: src/applications/differential/conduit/ConduitAPI_differential_creatediff_Method.php =================================================================== --- src/applications/differential/conduit/ConduitAPI_differential_creatediff_Method.php +++ src/applications/differential/conduit/ConduitAPI_differential_creatediff_Method.php @@ -1,8 +1,5 @@ 'required string', 'branch' => 'required string', 'bookmark' => 'optional string', - 'sourceControlSystem' => 'required enum', + 'sourceControlSystem' => 'required enum', 'sourceControlPath' => 'required string', 'sourceControlBaseRevision' => 'required string', - 'parentRevisionID' => 'optional revisionid', 'creationMethod' => 'optional string', - 'authorPHID' => 'optional phid', 'arcanistProject' => 'optional string', - 'repositoryUUID' => 'optional string', 'lintStatus' => 'required enum', 'unitStatus' => 'required enum', + 'repositoryPHID' => 'optional phid', + + 'parentRevisionID' => 'deprecated', + 'authorPHID' => 'deprecated', + 'repositoryUUID' => 'deprecated', ); } @@ -54,23 +53,23 @@ $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 @@ } $diff->setArcanistProjectPHID($project_phid); - $diff->setRepositoryUUID($request->getValue('repositoryUUID')); switch ($request->getValue('lintStatus')) { case 'skip': Index: src/applications/differential/storage/DifferentialDiff.php =================================================================== --- src/applications/differential/storage/DifferentialDiff.php +++ src/applications/differential/storage/DifferentialDiff.php @@ -8,6 +8,7 @@ protected $revisionID; protected $authorPHID; + protected $repositoryPHID; protected $sourceMachine; protected $sourcePath; @@ -24,7 +25,6 @@ protected $branch; protected $bookmark; - protected $parentRevisionID; protected $arcanistProjectPHID; protected $creationMethod; protected $repositoryUUID; @@ -223,7 +223,6 @@ public function getDiffDict() { $dict = array( 'id' => $this->getID(), - 'parent' => $this->getParentRevisionID(), 'revisionID' => $this->getRevisionID(), 'dateCreated' => $this->getDateCreated(), 'dateModified' => $this->getDateModified(), Index: src/applications/repository/conduit/ConduitAPI_repository_query_Method.php =================================================================== --- src/applications/repository/conduit/ConduitAPI_repository_query_Method.php +++ src/applications/repository/conduit/ConduitAPI_repository_query_Method.php @@ -22,6 +22,7 @@ 'callsigns' => 'optional list', 'vcsTypes' => 'optional list', 'remoteURIs' => 'optional list', + 'uuids' => 'optional list', ); } @@ -63,6 +64,11 @@ $query->withRemoteURIs($remote_uris); } + $uuids = $request->getValue('uuids', array()); + if ($uuids) { + $query->withUUIDs($uuids); + } + $repositories = $query->execute(); $results = array();