From 3186ef554cdbf54e1a3328ffcb35ea18105d7cb1 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Fri, 12 Apr 2019 10:28:44 +0800 Subject: Support search operators for commits search (#6479) * Support searching commits with prefix syntax For now, support auther: committer: When more than one prefix is supplied is presented, the result is the union. When different prefixes are supplied, the result is the intersection. For example, "author:alice author:bob" => the result is all commits authored by Alice OR Bob "hello committer:alice" => the result is all commits committed by Alice AND has the keyword 'hello' in the message. Note that there should NOT have any space after the colon(:) of the prefix. For example, "author:bill" => correct "author: bill" => wrong * Remove unneeded logging * Add missing files of test repository * Add missing repo_unit entries to test fixtures * Update test cases * Add tooltip for commits search button * Update tooltip text I have no idea about how to format it with line breaks. * Make the usage example more real * Add a test case * Add new options struct for SearchCommits * Prefer len(s) > 0 over s != "" * Add NewSearchCommitsOptions --- models/fixtures/repo_unit.yml | 37 ++++++++++++++++++++++++++++++++++++- models/fixtures/repository.yml | 11 +++++++++++ models/fixtures/user.yml | 2 +- models/repo_list_test.go | 10 +++++----- 4 files changed, 53 insertions(+), 7 deletions(-) (limited to 'models') diff --git a/models/fixtures/repo_unit.yml b/models/fixtures/repo_unit.yml index f494cdd1b7..7a594842a8 100644 --- a/models/fixtures/repo_unit.yml +++ b/models/fixtures/repo_unit.yml @@ -220,4 +220,39 @@ repo_id: 28 type: 1 config: "{}" - created_unix: 1524304355 \ No newline at end of file + created_unix: 1524304355 + +- + id: 33 + repo_id: 36 + type: 4 + config: "{}" + created_unix: 1524304355 + +- + id: 34 + repo_id: 36 + type: 5 + config: "{}" + created_unix: 1524304355 + +- + id: 35 + repo_id: 36 + type: 1 + config: "{}" + created_unix: 1524304355 + +- + id: 36 + repo_id: 36 + type: 2 + config: "{\"EnableTimetracker\":true,\"AllowOnlyContributorsToTrackTime\":true}" + created_unix: 1524304355 + +- + id: 37 + repo_id: 36 + type: 3 + config: "{\"IgnoreWhitespaceConflicts\":false,\"AllowMerge\":true,\"AllowRebase\":true,\"AllowRebaseMerge\":true,\"AllowSquash\":true}" + created_unix: 1524304355 diff --git a/models/fixtures/repository.yml b/models/fixtures/repository.yml index f415761650..0e7f8f90db 100644 --- a/models/fixtures/repository.yml +++ b/models/fixtures/repository.yml @@ -430,3 +430,14 @@ num_forks: 0 num_issues: 0 is_mirror: false + +- + id: 36 + owner_id: 2 + lower_name: commits_search_test + name: commits_search_test + is_private: false + num_stars: 0 + num_forks: 0 + num_issues: 0 + is_mirror: false diff --git a/models/fixtures/user.yml b/models/fixtures/user.yml index 8d2b698b20..22e408ed25 100644 --- a/models/fixtures/user.yml +++ b/models/fixtures/user.yml @@ -28,7 +28,7 @@ is_admin: false avatar: avatar2 avatar_email: user2@example.com - num_repos: 6 + num_repos: 7 num_stars: 2 num_followers: 2 num_following: 1 diff --git a/models/repo_list_test.go b/models/repo_list_test.go index c032af2b80..120718c210 100644 --- a/models/repo_list_test.go +++ b/models/repo_list_test.go @@ -147,19 +147,19 @@ func TestSearchRepositoryByName(t *testing.T) { count: 14}, {name: "AllPublic/PublicRepositoriesOfUserIncludingCollaborative", opts: &SearchRepoOptions{Page: 1, PageSize: 10, OwnerID: 15, AllPublic: true}, - count: 19}, + count: 20}, {name: "AllPublic/PublicAndPrivateRepositoriesOfUserIncludingCollaborative", opts: &SearchRepoOptions{Page: 1, PageSize: 10, OwnerID: 15, Private: true, AllPublic: true}, - count: 23}, + count: 24}, {name: "AllPublic/PublicAndPrivateRepositoriesOfUserIncludingCollaborativeByName", opts: &SearchRepoOptions{Keyword: "test", Page: 1, PageSize: 10, OwnerID: 15, Private: true, AllPublic: true}, - count: 13}, + count: 14}, {name: "AllPublic/PublicAndPrivateRepositoriesOfUser2IncludingCollaborativeByName", opts: &SearchRepoOptions{Keyword: "test", Page: 1, PageSize: 10, OwnerID: 18, Private: true, AllPublic: true}, - count: 11}, + count: 12}, {name: "AllPublic/PublicRepositoriesOfOrganization", opts: &SearchRepoOptions{Page: 1, PageSize: 10, OwnerID: 17, AllPublic: true, Collaborate: util.OptionalBoolFalse}, - count: 19}, + count: 20}, } for _, testCase := range testCases { -- cgit v1.2.3