2015-05-03 02:11:17 +02:00
|
|
|
#!/usr/bin/env php
|
|
|
|
<?php
|
|
|
|
|
|
|
|
$root = dirname(dirname(dirname(__FILE__)));
|
|
|
|
require_once $root.'/scripts/__init_script__.php';
|
|
|
|
|
|
|
|
$args = new PhutilArgumentParser($argv);
|
|
|
|
$args->setSynopsis(<<<EOSYNOPSIS
|
2016-02-18 12:09:59 +01:00
|
|
|
**clear_repository_symbols.php** [__options__] __repository__
|
2015-05-03 02:11:17 +02:00
|
|
|
|
|
|
|
Clear repository symbols.
|
|
|
|
EOSYNOPSIS
|
|
|
|
);
|
|
|
|
$args->parseStandardArguments();
|
|
|
|
$args->parse(
|
|
|
|
array(
|
|
|
|
array(
|
2016-02-18 12:09:59 +01:00
|
|
|
'name' => 'repository',
|
2015-05-03 02:11:17 +02:00
|
|
|
'wildcard' => true,
|
|
|
|
),
|
|
|
|
));
|
|
|
|
|
2016-02-18 12:09:59 +01:00
|
|
|
$identifiers = $args->getArg('repository');
|
|
|
|
if (count($identifiers) !== 1) {
|
2015-05-03 02:11:17 +02:00
|
|
|
$args->printHelpAndExit();
|
|
|
|
}
|
|
|
|
|
2016-02-18 12:09:59 +01:00
|
|
|
$identifier = head($identifiers);
|
2015-05-03 02:11:17 +02:00
|
|
|
$repository = id(new PhabricatorRepositoryQuery())
|
|
|
|
->setViewer(PhabricatorUser::getOmnipotentUser())
|
2016-02-18 12:09:59 +01:00
|
|
|
->withIdentifiers($identifiers)
|
2015-05-03 02:11:17 +02:00
|
|
|
->executeOne();
|
|
|
|
|
|
|
|
if (!$repository) {
|
2016-02-18 12:09:59 +01:00
|
|
|
echo tsprintf(
|
|
|
|
"%s\n",
|
|
|
|
pht('Repository "%s" does not exist.', $identifier));
|
2015-05-03 02:11:17 +02:00
|
|
|
exit(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
$input = file_get_contents('php://stdin');
|
|
|
|
$normalized = array();
|
|
|
|
foreach (explode("\n", trim($input)) as $path) {
|
|
|
|
// Emulate the behavior of the symbol generation scripts.
|
|
|
|
$normalized[] = '/'.ltrim($path, './');
|
|
|
|
}
|
|
|
|
$paths = PhabricatorRepositoryCommitChangeParserWorker::lookupOrCreatePaths(
|
|
|
|
$normalized);
|
|
|
|
|
|
|
|
$symbol = new PhabricatorRepositorySymbol();
|
|
|
|
$conn_w = $symbol->establishConnection('w');
|
|
|
|
|
|
|
|
foreach (array_chunk(array_values($paths), 128) as $chunk) {
|
|
|
|
queryfx(
|
|
|
|
$conn_w,
|
|
|
|
'DELETE FROM %T WHERE repositoryPHID = %s AND pathID IN (%Ld)',
|
|
|
|
$symbol->getTableName(),
|
|
|
|
$repository->getPHID(),
|
|
|
|
$chunk);
|
|
|
|
}
|