1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-21 22:32:41 +01:00

Arcanist / Conduit - stop using deprecated diffusion.getcommits

Summary: Fixes T7113. This one was a bit trickier than others as the API output changed a bit. In particular, there is no "errors" emitted so much as the result set just doesn't include the answer if things are garbage. Ergo, check the "identifier map" to either check for diff existence or to lookup the phid to grab the actual diff data from the "data" part of the result.

Test Plan: called `arc backout D11665` and got some working output...!

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin, epriestley

Maniphest Tasks: T7113

Differential Revision: https://secure.phabricator.com/D11667
This commit is contained in:
Bob Trahan 2015-02-03 14:33:06 -08:00
parent d98c104991
commit 5c20df1818
2 changed files with 12 additions and 9 deletions

View file

@ -88,15 +88,16 @@ EOTEXT
*/
private function getDiffusionCommit($commit_id) {
$result = $this->getConduit()->callMethodSynchronous(
'diffusion.getcommits',
'diffusion.querycommits',
array(
'commits' => array($commit_id),
'names' => array($commit_id),
));
$commit = $result[$commit_id];
$phid = idx($result['identifierMap'], $commit_id);
// This commit was not found in Diffusion
if (array_key_exists('error', $commit)) {
if (!$phid) {
return null;
}
$commit = $result['data'][$phid];
return $commit;
}
@ -157,7 +158,7 @@ EOTEXT
$revision_id = $matches[1];
$commit_id = $this->getCommitIDFromRevisionID($revision_id);
$commit = $this->getDiffusionCommit($commit_id);
$commit_hash = $commit['commitIdentifier'];
$commit_hash = $commit['identifier'];
// Convert commit hash from SVN to Git/HG (for FB case)
if ($is_git_svn || $is_hg_svn) {
$commit_hash = $repository_api->

View file

@ -1008,10 +1008,12 @@ abstract class ArcanistWorkflow extends Phobject {
$repository = $this->loadProjectRepository();
if ($repository) {
$callsign = $repository['callsign'];
$known_commits = $this->getConduit()->callMethodSynchronous(
'diffusion.getcommits',
array('commits' => array('r'.$callsign.$commit['commit'])));
if (ifilter($known_commits, 'error', $negate = true)) {
$commit_name = 'r'.$callsign.$commit['commit'];
$result = $this->getConduit()->callMethodSynchronous(
'diffusion.querycommits',
array('names' => array($commit_name)));
$known_commit = idx($result['identifierMap'], $commit_name);
if (!$known_commit) {
return false;
}
}