Changeset View
Changeset View
Standalone View
Standalone View
src/repository/remote/ArcanistMercurialRepositoryRemoteQuery.php
- This file was added.
<?php | |||||
final class ArcanistMercurialRepositoryRemoteQuery | |||||
extends ArcanistRepositoryRemoteQuery { | |||||
protected function newRemoteRefs() { | |||||
$api = $this->getRepositoryAPI(); | |||||
$future = $api->newFuture('paths'); | |||||
list($lines) = $future->resolve(); | |||||
$refs = array(); | |||||
$pattern = '(^(?P<name>.*?) = (?P<uri>.*)\z)'; | |||||
$lines = phutil_split_lines($lines, false); | |||||
foreach ($lines as $line) { | |||||
$matches = null; | |||||
if (!preg_match($pattern, $line, $matches)) { | |||||
throw new Exception( | |||||
pht( | |||||
'Failed to match remote pattern against line "%s".', | |||||
$line)); | |||||
} | |||||
$name = $matches['name']; | |||||
$uri = $matches['uri']; | |||||
// NOTE: Mercurial gives some special behavior to "default" and | |||||
// "default-push", but these remotes are both fully-formed remotes that | |||||
// are fetchable and pushable, they just have rules around selection | |||||
// as default targets for operations. | |||||
$ref = id(new ArcanistRemoteRef()) | |||||
->setRemoteName($name) | |||||
->setFetchURI($uri) | |||||
->setPushURI($uri); | |||||
$refs[] = $ref; | |||||
} | |||||
return $refs; | |||||
} | |||||
} |