mirror of
https://we.phorge.it/source/phorge.git
synced 2025-02-02 09:58:24 +01:00
Allow commits to be queried by repository using the tagged(...)
typehaead function
Summary: Fixes T12322. Allows you to search for commits using the `tagged(...)` repository function, so you can find "any commmit in any repository tagged with android" or similar. I moved the function from Differential (which was the application using it) to Diffusion (which is more accurately the application which provides it). I fixed a bug where searching for `tagged(xyz)` would have no effect (constraint was ignored) if there were no repositories tagged with "xyz". The fix isn't perfectly clean, but should work properly for the moment. Test Plan: - Searched with `tagged(...)` in Diffusion and Differential. - Searched by repository. - Searched with `tagged(...)` for a project with no tagged repositories. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12322 Differential Revision: https://secure.phabricator.com/D17426
This commit is contained in:
parent
3bea3fbb12
commit
c5fa7421c2
5 changed files with 14 additions and 6 deletions
|
@ -482,7 +482,6 @@ phutil_register_library_map(array(
|
||||||
'DifferentialReleephRequestFieldSpecification' => 'applications/releeph/differential/DifferentialReleephRequestFieldSpecification.php',
|
'DifferentialReleephRequestFieldSpecification' => 'applications/releeph/differential/DifferentialReleephRequestFieldSpecification.php',
|
||||||
'DifferentialRemarkupRule' => 'applications/differential/remarkup/DifferentialRemarkupRule.php',
|
'DifferentialRemarkupRule' => 'applications/differential/remarkup/DifferentialRemarkupRule.php',
|
||||||
'DifferentialReplyHandler' => 'applications/differential/mail/DifferentialReplyHandler.php',
|
'DifferentialReplyHandler' => 'applications/differential/mail/DifferentialReplyHandler.php',
|
||||||
'DifferentialRepositoryDatasource' => 'applications/differential/typeahead/DifferentialRepositoryDatasource.php',
|
|
||||||
'DifferentialRepositoryField' => 'applications/differential/customfield/DifferentialRepositoryField.php',
|
'DifferentialRepositoryField' => 'applications/differential/customfield/DifferentialRepositoryField.php',
|
||||||
'DifferentialRepositoryLookup' => 'applications/differential/query/DifferentialRepositoryLookup.php',
|
'DifferentialRepositoryLookup' => 'applications/differential/query/DifferentialRepositoryLookup.php',
|
||||||
'DifferentialRequiredSignaturesField' => 'applications/differential/customfield/DifferentialRequiredSignaturesField.php',
|
'DifferentialRequiredSignaturesField' => 'applications/differential/customfield/DifferentialRequiredSignaturesField.php',
|
||||||
|
@ -827,6 +826,7 @@ phutil_register_library_map(array(
|
||||||
'DiffusionRepositoryEditDeleteController' => 'applications/diffusion/controller/DiffusionRepositoryEditDeleteController.php',
|
'DiffusionRepositoryEditDeleteController' => 'applications/diffusion/controller/DiffusionRepositoryEditDeleteController.php',
|
||||||
'DiffusionRepositoryEditEngine' => 'applications/diffusion/editor/DiffusionRepositoryEditEngine.php',
|
'DiffusionRepositoryEditEngine' => 'applications/diffusion/editor/DiffusionRepositoryEditEngine.php',
|
||||||
'DiffusionRepositoryEditUpdateController' => 'applications/diffusion/controller/DiffusionRepositoryEditUpdateController.php',
|
'DiffusionRepositoryEditUpdateController' => 'applications/diffusion/controller/DiffusionRepositoryEditUpdateController.php',
|
||||||
|
'DiffusionRepositoryFunctionDatasource' => 'applications/diffusion/typeahead/DiffusionRepositoryFunctionDatasource.php',
|
||||||
'DiffusionRepositoryHistoryManagementPanel' => 'applications/diffusion/management/DiffusionRepositoryHistoryManagementPanel.php',
|
'DiffusionRepositoryHistoryManagementPanel' => 'applications/diffusion/management/DiffusionRepositoryHistoryManagementPanel.php',
|
||||||
'DiffusionRepositoryListController' => 'applications/diffusion/controller/DiffusionRepositoryListController.php',
|
'DiffusionRepositoryListController' => 'applications/diffusion/controller/DiffusionRepositoryListController.php',
|
||||||
'DiffusionRepositoryManageController' => 'applications/diffusion/controller/DiffusionRepositoryManageController.php',
|
'DiffusionRepositoryManageController' => 'applications/diffusion/controller/DiffusionRepositoryManageController.php',
|
||||||
|
@ -5211,7 +5211,6 @@ phutil_register_library_map(array(
|
||||||
'DifferentialReleephRequestFieldSpecification' => 'Phobject',
|
'DifferentialReleephRequestFieldSpecification' => 'Phobject',
|
||||||
'DifferentialRemarkupRule' => 'PhabricatorObjectRemarkupRule',
|
'DifferentialRemarkupRule' => 'PhabricatorObjectRemarkupRule',
|
||||||
'DifferentialReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler',
|
'DifferentialReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler',
|
||||||
'DifferentialRepositoryDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
|
|
||||||
'DifferentialRepositoryField' => 'DifferentialCoreCustomField',
|
'DifferentialRepositoryField' => 'DifferentialCoreCustomField',
|
||||||
'DifferentialRepositoryLookup' => 'Phobject',
|
'DifferentialRepositoryLookup' => 'Phobject',
|
||||||
'DifferentialRequiredSignaturesField' => 'DifferentialCoreCustomField',
|
'DifferentialRequiredSignaturesField' => 'DifferentialCoreCustomField',
|
||||||
|
@ -5575,6 +5574,7 @@ phutil_register_library_map(array(
|
||||||
'DiffusionRepositoryEditDeleteController' => 'DiffusionRepositoryManageController',
|
'DiffusionRepositoryEditDeleteController' => 'DiffusionRepositoryManageController',
|
||||||
'DiffusionRepositoryEditEngine' => 'PhabricatorEditEngine',
|
'DiffusionRepositoryEditEngine' => 'PhabricatorEditEngine',
|
||||||
'DiffusionRepositoryEditUpdateController' => 'DiffusionRepositoryManageController',
|
'DiffusionRepositoryEditUpdateController' => 'DiffusionRepositoryManageController',
|
||||||
|
'DiffusionRepositoryFunctionDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
|
||||||
'DiffusionRepositoryHistoryManagementPanel' => 'DiffusionRepositoryManagementPanel',
|
'DiffusionRepositoryHistoryManagementPanel' => 'DiffusionRepositoryManagementPanel',
|
||||||
'DiffusionRepositoryListController' => 'DiffusionController',
|
'DiffusionRepositoryListController' => 'DiffusionController',
|
||||||
'DiffusionRepositoryManageController' => 'DiffusionController',
|
'DiffusionRepositoryManageController' => 'DiffusionController',
|
||||||
|
|
|
@ -85,7 +85,7 @@ final class PhabricatorCommitSearchEngine
|
||||||
->setKey('repositoryPHIDs')
|
->setKey('repositoryPHIDs')
|
||||||
->setConduitKey('repositories')
|
->setConduitKey('repositories')
|
||||||
->setAliases(array('repository', 'repositories', 'repositoryPHID'))
|
->setAliases(array('repository', 'repositories', 'repositoryPHID'))
|
||||||
->setDatasource(new DiffusionRepositoryDatasource()),
|
->setDatasource(new DiffusionRepositoryFunctionDatasource()),
|
||||||
id(new PhabricatorSearchDatasourceField())
|
id(new PhabricatorSearchDatasourceField())
|
||||||
->setLabel(pht('Packages'))
|
->setLabel(pht('Packages'))
|
||||||
->setKey('packagePHIDs')
|
->setKey('packagePHIDs')
|
||||||
|
|
|
@ -75,7 +75,7 @@ final class DifferentialRevisionSearchEngine
|
||||||
->setLabel(pht('Repositories'))
|
->setLabel(pht('Repositories'))
|
||||||
->setKey('repositoryPHIDs')
|
->setKey('repositoryPHIDs')
|
||||||
->setAliases(array('repository', 'repositories', 'repositoryPHID'))
|
->setAliases(array('repository', 'repositories', 'repositoryPHID'))
|
||||||
->setDatasource(new DifferentialRepositoryDatasource())
|
->setDatasource(new DiffusionRepositoryFunctionDatasource())
|
||||||
->setDescription(
|
->setDescription(
|
||||||
pht('Find revisions from specific repositories.')),
|
pht('Find revisions from specific repositories.')),
|
||||||
id(new PhabricatorSearchSelectField())
|
id(new PhabricatorSearchSelectField())
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
final class DifferentialRepositoryDatasource
|
final class DiffusionRepositoryFunctionDatasource
|
||||||
extends PhabricatorTypeaheadCompositeDatasource {
|
extends PhabricatorTypeaheadCompositeDatasource {
|
||||||
|
|
||||||
public function getBrowseTitle() {
|
public function getBrowseTitle() {
|
|
@ -67,11 +67,19 @@ final class DiffusionTaggedRepositoriesFunctionDatasource
|
||||||
->execute();
|
->execute();
|
||||||
|
|
||||||
$results = array();
|
$results = array();
|
||||||
|
|
||||||
foreach ($repositories as $repository) {
|
foreach ($repositories as $repository) {
|
||||||
$results[] = $repository->getPHID();
|
$results[] = $repository->getPHID();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!$results) {
|
||||||
|
// TODO: This is a little hacky, but if you query for "tagged(x)" and
|
||||||
|
// there are no such repositories, we want to match nothing. If we
|
||||||
|
// just return `array()`, that gets evaluated as "no constraint" and
|
||||||
|
// we match everything. This works correctly for now, but should be
|
||||||
|
// replaced with some more elegant/general approach eventually.
|
||||||
|
$results[] = PhabricatorPHIDConstants::PHID_VOID;
|
||||||
|
}
|
||||||
|
|
||||||
return $results;
|
return $results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue