diff options
author | Mura Li <typeless@users.noreply.github.com> | 2019-04-12 10:28:44 +0800 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2019-04-12 10:28:44 +0800 |
commit | 3186ef554cdbf54e1a3328ffcb35ea18105d7cb1 (patch) | |
tree | a5291a4503ea8e7c009446098ea88cf885abb0fb /routers | |
parent | 1b7dffc3a30b2244aa2690abce19dd4c31613016 (diff) | |
download | gitea-3186ef554cdbf54e1a3328ffcb35ea18105d7cb1.tar.gz gitea-3186ef554cdbf54e1a3328ffcb35ea18105d7cb1.zip |
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
Diffstat (limited to 'routers')
-rw-r--r-- | routers/repo/commit.go | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/routers/repo/commit.go b/routers/repo/commit.go index 6b99a1220d..a1e9b8bc5d 100644 --- a/routers/repo/commit.go +++ b/routers/repo/commit.go @@ -107,14 +107,15 @@ func SearchCommits(ctx *context.Context) { ctx.Data["PageIsCommits"] = true ctx.Data["PageIsViewCode"] = true - keyword := strings.Trim(ctx.Query("q"), " ") - if len(keyword) == 0 { + query := strings.Trim(ctx.Query("q"), " ") + if len(query) == 0 { ctx.Redirect(ctx.Repo.RepoLink + "/commits/" + ctx.Repo.BranchNameSubURL()) return } - all := ctx.QueryBool("all") - commits, err := ctx.Repo.Commit.SearchCommits(keyword, all) + all := ctx.QueryBool("all") + opts := git.NewSearchCommitsOptions(query, all) + commits, err := ctx.Repo.Commit.SearchCommits(opts) if err != nil { ctx.ServerError("SearchCommits", err) return @@ -124,7 +125,7 @@ func SearchCommits(ctx *context.Context) { commits = models.ParseCommitsWithStatus(commits, ctx.Repo.Repository) ctx.Data["Commits"] = commits - ctx.Data["Keyword"] = keyword + ctx.Data["Keyword"] = query if all { ctx.Data["All"] = "checked" } |