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; | |||||
| } | |||||
| } | |||||