3
final class ArcanistDifferentialDependencyGraph extends AbstractDirectedGraph {
5
private $repositoryAPI;
9
public function setStartPHID($start_phid) {
10
$this->startPHID = $start_phid;
13
public function getStartPHID() {
14
return $this->startPHID;
17
public function setRepositoryAPI(ArcanistRepositoryAPI $repository_api) {
18
$this->repositoryAPI = $repository_api;
21
public function getRepositoryAPI() {
22
return $this->repositoryAPI;
25
public function setConduit(ConduitClient $conduit) {
26
$this->conduit = $conduit;
29
public function getConduit() {
30
return $this->conduit;
33
protected function loadEdges(array $nodes) {
34
$repository_api = $this->getRepositoryAPI();
36
$dependencies = $this->getConduit()->callMethodSynchronous(
43
foreach ($dependencies as $dependency) {
44
$dependency_revision = $this->getCommitHashFromDict($dependency);
45
if ($repository_api->hasLocalCommit($dependency_revision)) {
46
$edges[$dependency['phid']] = array();
49
$auxillary = idx($dependency, 'auxiliary', array());
50
$edges[$dependency['phid']] = idx(
52
'phabricator:depends-on',
58
private function getCommitHashFromDict($dict) {
59
$api = $this->getRepositoryAPI();
60
$hashes = idx($dict, 'hashes', array());
61
if ($api instanceof ArcanistGitAPI) {
62
$key = ArcanistDifferentialRevisionHash::HASH_GIT_COMMIT;
63
} else if ($api instanceof ArcanistMercurialAPI) {
64
$key = ArcanistDifferentialRevisionHash::HASH_MERCURIAL_COMMIT;
69
return idx($hashes, $key);