mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-22 06:42: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:
parent
d98c104991
commit
5c20df1818
2 changed files with 12 additions and 9 deletions
|
@ -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->
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue