diff --git a/src/applications/diffusion/data/DiffusionCommitRef.php b/src/applications/diffusion/data/DiffusionCommitRef.php --- a/src/applications/diffusion/data/DiffusionCommitRef.php +++ b/src/applications/diffusion/data/DiffusionCommitRef.php @@ -9,6 +9,26 @@ private $committerEmail; private $hashes = array(); + public static function newFromConduitResult(array $result) { + $ref = id(new DiffusionCommitRef()) + ->setCommitterEmail(idx($result, 'committerEmail')) + ->setCommitterName(idx($result, 'committerName')) + ->setAuthorEmail(idx($result, 'authorEmail')) + ->setAuthorName(idx($result, 'authorName')) + ->setMessage(idx($result, 'message')); + + $hashes = array(); + foreach (idx($result, 'hashes', array()) as $hash_result) { + $hashes[] = id(new DiffusionCommitHash()) + ->setHashType(idx($hash_result, 'type')) + ->setHashValue(idx($hash_result, 'value')); + } + + $ref->setHashes($hashes); + + return $ref; + } + public function setHashes(array $hashes) { $this->hashes = $hashes; return $this; diff --git a/src/applications/repository/management/PhabricatorRepositoryManagementLookupUsersWorkflow.php b/src/applications/repository/management/PhabricatorRepositoryManagementLookupUsersWorkflow.php --- a/src/applications/repository/management/PhabricatorRepositoryManagementLookupUsersWorkflow.php +++ b/src/applications/repository/management/PhabricatorRepositoryManagementLookupUsersWorkflow.php @@ -33,10 +33,25 @@ "%s\n", pht('Examining commit %s...', $name)); - $ref = id(new DiffusionLowLevelCommitQuery()) - ->setRepository($repo) - ->withIdentifier($commit->getCommitIdentifier()) - ->execute(); + $refs_raw = DiffusionQuery::callConduitWithDiffusionRequest( + $this->getViewer(), + DiffusionRequest::newFromDictionary( + array( + 'repository' => $repo, + 'user' => $this->getViewer(), + )), + 'diffusion.querycommits', + array( + 'phids' => array($commit->getPHID()), + 'bypassCache' => true, + )); + + if (empty($refs_raw['data'])) { + throw new Exception( + pht('Unable to retrieve details for commit "%s"!')); + } + + $ref = DiffusionCommitRef::newFromConduitResult(head($refs_raw['data'])); $author = $ref->getAuthor(); $console->writeOut(