mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-25 08:12:40 +01:00
Add an administrative bin/repository importing
command to list importing commits
Summary: Ref T4068. Adds a command to list all commits in an "importing" status. This will allow users to use `reparse.php` to diagnose and repair issues. Test Plan: - Ran `bin/repository importing P`, etc. - Used `reparse.php` to reparse some commit stages and saw status update correctly. - Ran on a repo with no importing commits. - Ran with `... --simple | xargs`, which saves us having to put an `awk` or something in there for users. Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T4068 Differential Revision: https://secure.phabricator.com/D7515
This commit is contained in:
parent
e3a5ab1f8c
commit
bd29784a32
3 changed files with 89 additions and 0 deletions
|
@ -21,6 +21,7 @@ $workflows = array(
|
|||
new PhabricatorRepositoryManagementListWorkflow(),
|
||||
new PhabricatorRepositoryManagementDeleteWorkflow(),
|
||||
new PhabricatorRepositoryManagementMarkImportedWorkflow(),
|
||||
new PhabricatorRepositoryManagementImportingWorkflow(),
|
||||
new PhutilHelpArgumentWorkflow(),
|
||||
);
|
||||
|
||||
|
|
|
@ -1660,6 +1660,7 @@ phutil_register_library_map(array(
|
|||
'PhabricatorRepositoryListController' => 'applications/repository/controller/PhabricatorRepositoryListController.php',
|
||||
'PhabricatorRepositoryManagementDeleteWorkflow' => 'applications/repository/management/PhabricatorRepositoryManagementDeleteWorkflow.php',
|
||||
'PhabricatorRepositoryManagementDiscoverWorkflow' => 'applications/repository/management/PhabricatorRepositoryManagementDiscoverWorkflow.php',
|
||||
'PhabricatorRepositoryManagementImportingWorkflow' => 'applications/repository/management/PhabricatorRepositoryManagementImportingWorkflow.php',
|
||||
'PhabricatorRepositoryManagementListWorkflow' => 'applications/repository/management/PhabricatorRepositoryManagementListWorkflow.php',
|
||||
'PhabricatorRepositoryManagementMarkImportedWorkflow' => 'applications/repository/management/PhabricatorRepositoryManagementMarkImportedWorkflow.php',
|
||||
'PhabricatorRepositoryManagementPullWorkflow' => 'applications/repository/management/PhabricatorRepositoryManagementPullWorkflow.php',
|
||||
|
@ -4013,6 +4014,7 @@ phutil_register_library_map(array(
|
|||
'PhabricatorRepositoryListController' => 'PhabricatorRepositoryController',
|
||||
'PhabricatorRepositoryManagementDeleteWorkflow' => 'PhabricatorRepositoryManagementWorkflow',
|
||||
'PhabricatorRepositoryManagementDiscoverWorkflow' => 'PhabricatorRepositoryManagementWorkflow',
|
||||
'PhabricatorRepositoryManagementImportingWorkflow' => 'PhabricatorRepositoryManagementWorkflow',
|
||||
'PhabricatorRepositoryManagementListWorkflow' => 'PhabricatorRepositoryManagementWorkflow',
|
||||
'PhabricatorRepositoryManagementMarkImportedWorkflow' => 'PhabricatorRepositoryManagementWorkflow',
|
||||
'PhabricatorRepositoryManagementPullWorkflow' => 'PhabricatorRepositoryManagementWorkflow',
|
||||
|
|
|
@ -0,0 +1,86 @@
|
|||
<?php
|
||||
|
||||
final class PhabricatorRepositoryManagementImportingWorkflow
|
||||
extends PhabricatorRepositoryManagementWorkflow {
|
||||
|
||||
public function didConstruct() {
|
||||
$this
|
||||
->setName('importing')
|
||||
->setExamples('**importing** __repository__ ...')
|
||||
->setSynopsis(
|
||||
'Show commits in __repository__, named by callsign, which are still '.
|
||||
'importing.')
|
||||
->setArguments(
|
||||
array(
|
||||
array(
|
||||
'name' => 'simple',
|
||||
'help' => 'Show simpler output.',
|
||||
),
|
||||
array(
|
||||
'name' => 'repos',
|
||||
'wildcard' => true,
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
public function execute(PhutilArgumentParser $args) {
|
||||
$repos = $this->loadRepositories($args, 'repos');
|
||||
|
||||
if (!$repos) {
|
||||
throw new PhutilArgumentUsageException(
|
||||
"Specify one or more repositories to find importing commits for, ".
|
||||
"by callsign.");
|
||||
}
|
||||
|
||||
$repos = mpull($repos, null, 'getID');
|
||||
|
||||
$table = new PhabricatorRepositoryCommit();
|
||||
$conn_r = $table->establishConnection('r');
|
||||
|
||||
$rows = queryfx_all(
|
||||
$conn_r,
|
||||
'SELECT repositoryID, commitIdentifier, importStatus FROM %T
|
||||
WHERE repositoryID IN (%Ld) AND importStatus != %d',
|
||||
$table->getTableName(),
|
||||
array_keys($repos),
|
||||
PhabricatorRepositoryCommit::IMPORTED_ALL);
|
||||
|
||||
$console = PhutilConsole::getConsole();
|
||||
if ($rows) {
|
||||
foreach ($rows as $row) {
|
||||
$repo = $repos[$row['repositoryID']];
|
||||
$identifier = $row['commitIdentifier'];
|
||||
|
||||
$console->writeOut("%s", 'r'.$repo->getCallsign().$identifier);
|
||||
|
||||
if (!$args->getArg('simple')) {
|
||||
$status = $row['importStatus'];
|
||||
$need = array();
|
||||
if (!($status & PhabricatorRepositoryCommit::IMPORTED_MESSAGE)) {
|
||||
$need[] = 'Message';
|
||||
}
|
||||
if (!($status & PhabricatorRepositoryCommit::IMPORTED_CHANGE)) {
|
||||
$need[] = 'Change';
|
||||
}
|
||||
if (!($status & PhabricatorRepositoryCommit::IMPORTED_OWNERS)) {
|
||||
$need[] = 'Owners';
|
||||
}
|
||||
if (!($status & PhabricatorRepositoryCommit::IMPORTED_HERALD)) {
|
||||
$need[] = 'Herald';
|
||||
}
|
||||
|
||||
$console->writeOut(" %s", implode(', ', $need));
|
||||
}
|
||||
|
||||
$console->writeOut("\n");
|
||||
}
|
||||
} else {
|
||||
$console->writeErr(
|
||||
"%s\n",
|
||||
pht('No importing commits found.'));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue