aboutsummaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
authorMura Li <typeless@users.noreply.github.com>2019-04-12 10:28:44 +0800
committerLunny Xiao <xiaolunwen@gmail.com>2019-04-12 10:28:44 +0800
commit3186ef554cdbf54e1a3328ffcb35ea18105d7cb1 (patch)
treea5291a4503ea8e7c009446098ea88cf885abb0fb /routers
parent1b7dffc3a30b2244aa2690abce19dd4c31613016 (diff)
downloadgitea-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.go11
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"
}