phacility/phabricator · error · Exception
No repository "%s" exists!
Error message
No repository "%s" exists!
What it means
Exception from PhabricatorRepositoryPullLocalDaemon::loadPullableRepositories(): an identifier passed via the daemon's --repositories argument did not resolve to any repository. The daemon runs PhabricatorRepositoryQuery->withIdentifiers($include) and requires every include identifier (callsign, PHID, or ID) to appear in the identifier map; a miss aborts daemon startup with 'No repository "X" exists!'.
Source
Thrown at src/applications/repository/daemon/PhabricatorRepositoryPullLocalDaemon.php:424
array $include,
array $exclude,
AlmanacDevice $device = null) {
$query = id(new PhabricatorRepositoryQuery())
->setViewer($this->getViewer());
if ($include) {
$query->withIdentifiers($include);
}
$repositories = $query->execute();
$repositories = mpull($repositories, null, 'getPHID');
if ($include) {
$map = $query->getIdentifierMap();
foreach ($include as $identifier) {
if (empty($map[$identifier])) {
throw new Exception(
pht(
'No repository "%s" exists!',
$identifier));
}
}
}
if ($exclude) {
$xquery = id(new PhabricatorRepositoryQuery())
->setViewer($this->getViewer())
->withIdentifiers($exclude);
$excluded_repos = $xquery->execute();
$xmap = $xquery->getIdentifierMap();
foreach ($exclude as $identifier) {
if (empty($xmap[$identifier])) {
throw new Exception(View on GitHub (pinned to 5720a38cfe)
Solutions
- List valid identifiers: use the UI or conduit repository.query, and confirm the callsign/PHID/ID you passed.
- Correct the --repositories argument and relaunch the daemon (phd launch repository-pull-locals -- --repositories <callsign>).
- If the repository was deleted, remove it from the daemon launch configuration entirely.
- For scripts, resolve identifiers dynamically (repository.query) instead of hard-coding PHIDs.
Example fix
# before phd launch repository-pull-locals -- --repositories DOESNOTEXIST # after phd launch repository-pull-locals -- --repositories ABCD
Defensive patterns
Strategy: validation
Validate before calling
// Resolve identifiers before launching the daemon:
$repos = $conduit->callMethod('repository.query', array(
'callsigns' => array('ABCD'),
));
if (!$repos) {
throw new Exception('Repository ABCD does not exist; fix --repositories.');
} Type guard
function allRepositoryIdentifiersExist(array $identifiers, $viewer) {
$query = id(new PhabricatorRepositoryQuery())
->setViewer($viewer)
->withIdentifiers($identifiers);
$query->execute();
$map = $query->getIdentifierMap();
foreach ($identifiers as $id) {
if (empty($map[$id])) { return false; }
}
return true;
} Try / catch
try {
$daemon->run();
} catch (Exception $ex) {
if (preg_match('/No repository "/', $ex->getMessage())) {
// fix the --repositories argument, then relaunch
}
throw $ex;
} Prevention
- Use conduit repository.query (or the UI) to confirm callsigns before writing launch scripts.
- Prefer stable callsigns over PHIDs in long-lived unit files.
- Prune daemon launch configs when repositories are deleted or renamed.
When it happens
Trigger: Launching the pull daemon with a bad filter, e.g. phd launch repository-pull-locals -- --repositories DOESNOTEXIST, or with a PHID/callsign of a repository that was deleted or never existed. The foreach over $include finds the identifier missing from $query->getIdentifierMap() and throws.
Common situations: Typos in callsigns; repository deleted or renamed after the daemon launch script/unit file was written; environments where the callsign contains different casing; scripts copied between instances whose PHIDs do not exist locally.
Related errors
- Unable to upload file: this server is not configured with an
- No configured mailers support outbound messages of type "%s"
- Mailer key ("%s") is not configured, or does not support out
- Application email ("%s") has an invalid default author ("%s"
- Another process is currently discovering repository "%s", sk
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/ce1f1176543eb496.
Report an issue: GitHub.