Changeset View
Changeset View
Standalone View
Standalone View
src/repository/graph/query/ArcanistSimpleCommitGraphQuery.php
- This file was added.
<?php | |||||
final class ArcanistSimpleCommitGraphQuery | |||||
extends ArcanistCommitGraphQuery { | |||||
private $corpus; | |||||
public function setCorpus($corpus) { | |||||
$this->corpus = $corpus; | |||||
return $this; | |||||
} | |||||
public function getCorpus() { | |||||
return $this->corpus; | |||||
} | |||||
public function execute() { | |||||
$graph = $this->getGraph(); | |||||
$corpus = $this->getCorpus(); | |||||
$edges = preg_split('(\s+)', trim($corpus)); | |||||
foreach ($edges as $edge) { | |||||
$matches = null; | |||||
$ok = preg_match('(^(?P<parent>\S+)>(?P<child>\S+)\z)', $edge, $matches); | |||||
if (!$ok) { | |||||
throw new Exception( | |||||
pht( | |||||
'Failed to match SimpleCommitGraph directive "%s".', | |||||
$edge)); | |||||
} | |||||
$parent = $matches['parent']; | |||||
$child = $matches['child']; | |||||
$pnode = $graph->getNode($parent); | |||||
if (!$pnode) { | |||||
$pnode = $graph->newNode($parent); | |||||
} | |||||
$cnode = $graph->getNode($child); | |||||
if (!$cnode) { | |||||
$cnode = $graph->newNode($child); | |||||
} | |||||
$cnode->addParentNode($pnode); | |||||
$pnode->addChildNode($cnode); | |||||
} | |||||
} | |||||
} |