Skip to content

Commit c5fa742

Browse files
author
epriestley
committedFeb 27, 2017
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
1 parent 3bea3fb commit c5fa742

5 files changed

+14
-6
lines changed
 

‎src/__phutil_library_map__.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,6 @@
482482
'DifferentialReleephRequestFieldSpecification' => 'applications/releeph/differential/DifferentialReleephRequestFieldSpecification.php',
483483
'DifferentialRemarkupRule' => 'applications/differential/remarkup/DifferentialRemarkupRule.php',
484484
'DifferentialReplyHandler' => 'applications/differential/mail/DifferentialReplyHandler.php',
485-
'DifferentialRepositoryDatasource' => 'applications/differential/typeahead/DifferentialRepositoryDatasource.php',
486485
'DifferentialRepositoryField' => 'applications/differential/customfield/DifferentialRepositoryField.php',
487486
'DifferentialRepositoryLookup' => 'applications/differential/query/DifferentialRepositoryLookup.php',
488487
'DifferentialRequiredSignaturesField' => 'applications/differential/customfield/DifferentialRequiredSignaturesField.php',
@@ -827,6 +826,7 @@
827826
'DiffusionRepositoryEditDeleteController' => 'applications/diffusion/controller/DiffusionRepositoryEditDeleteController.php',
828827
'DiffusionRepositoryEditEngine' => 'applications/diffusion/editor/DiffusionRepositoryEditEngine.php',
829828
'DiffusionRepositoryEditUpdateController' => 'applications/diffusion/controller/DiffusionRepositoryEditUpdateController.php',
829+
'DiffusionRepositoryFunctionDatasource' => 'applications/diffusion/typeahead/DiffusionRepositoryFunctionDatasource.php',
830830
'DiffusionRepositoryHistoryManagementPanel' => 'applications/diffusion/management/DiffusionRepositoryHistoryManagementPanel.php',
831831
'DiffusionRepositoryListController' => 'applications/diffusion/controller/DiffusionRepositoryListController.php',
832832
'DiffusionRepositoryManageController' => 'applications/diffusion/controller/DiffusionRepositoryManageController.php',
@@ -5211,7 +5211,6 @@
52115211
'DifferentialReleephRequestFieldSpecification' => 'Phobject',
52125212
'DifferentialRemarkupRule' => 'PhabricatorObjectRemarkupRule',
52135213
'DifferentialReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler',
5214-
'DifferentialRepositoryDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
52155214
'DifferentialRepositoryField' => 'DifferentialCoreCustomField',
52165215
'DifferentialRepositoryLookup' => 'Phobject',
52175216
'DifferentialRequiredSignaturesField' => 'DifferentialCoreCustomField',
@@ -5575,6 +5574,7 @@
55755574
'DiffusionRepositoryEditDeleteController' => 'DiffusionRepositoryManageController',
55765575
'DiffusionRepositoryEditEngine' => 'PhabricatorEditEngine',
55775576
'DiffusionRepositoryEditUpdateController' => 'DiffusionRepositoryManageController',
5577+
'DiffusionRepositoryFunctionDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
55785578
'DiffusionRepositoryHistoryManagementPanel' => 'DiffusionRepositoryManagementPanel',
55795579
'DiffusionRepositoryListController' => 'DiffusionController',
55805580
'DiffusionRepositoryManageController' => 'DiffusionController',

‎src/applications/audit/query/PhabricatorCommitSearchEngine.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ protected function buildCustomSearchFields() {
8585
->setKey('repositoryPHIDs')
8686
->setConduitKey('repositories')
8787
->setAliases(array('repository', 'repositories', 'repositoryPHID'))
88-
->setDatasource(new DiffusionRepositoryDatasource()),
88+
->setDatasource(new DiffusionRepositoryFunctionDatasource()),
8989
id(new PhabricatorSearchDatasourceField())
9090
->setLabel(pht('Packages'))
9191
->setKey('packagePHIDs')

‎src/applications/differential/query/DifferentialRevisionSearchEngine.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ protected function buildCustomSearchFields() {
7575
->setLabel(pht('Repositories'))
7676
->setKey('repositoryPHIDs')
7777
->setAliases(array('repository', 'repositories', 'repositoryPHID'))
78-
->setDatasource(new DifferentialRepositoryDatasource())
78+
->setDatasource(new DiffusionRepositoryFunctionDatasource())
7979
->setDescription(
8080
pht('Find revisions from specific repositories.')),
8181
id(new PhabricatorSearchSelectField())

‎src/applications/differential/typeahead/DifferentialRepositoryDatasource.php ‎src/applications/diffusion/typeahead/DiffusionRepositoryFunctionDatasource.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
final class DifferentialRepositoryDatasource
3+
final class DiffusionRepositoryFunctionDatasource
44
extends PhabricatorTypeaheadCompositeDatasource {
55

66
public function getBrowseTitle() {

‎src/applications/diffusion/typeahead/DiffusionTaggedRepositoriesFunctionDatasource.php

+9-1
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,19 @@ protected function evaluateFunction($function, array $argv_list) {
6767
->execute();
6868

6969
$results = array();
70-
7170
foreach ($repositories as $repository) {
7271
$results[] = $repository->getPHID();
7372
}
7473

74+
if (!$results) {
75+
// TODO: This is a little hacky, but if you query for "tagged(x)" and
76+
// there are no such repositories, we want to match nothing. If we
77+
// just return `array()`, that gets evaluated as "no constraint" and
78+
// we match everything. This works correctly for now, but should be
79+
// replaced with some more elegant/general approach eventually.
80+
$results[] = PhabricatorPHIDConstants::PHID_VOID;
81+
}
82+
7583
return $results;
7684
}
7785

0 commit comments

Comments
 (0)
Failed to load comments.