diff options
Diffstat (limited to 'modules/git/repo_commit.go')
-rw-r--r-- | modules/git/repo_commit.go | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/modules/git/repo_commit.go b/modules/git/repo_commit.go index 146619373d..1ecd1f8891 100644 --- a/modules/git/repo_commit.go +++ b/modules/git/repo_commit.go @@ -237,9 +237,30 @@ func (repo *Repository) commitsByRange(id SHA1, page int) (*list.List, error) { return repo.parsePrettyFormatLogToList(stdout) } -func (repo *Repository) searchCommits(id SHA1, keyword string, all bool) (*list.List, error) { - cmd := NewCommand("log", id.String(), "-100", "-i", "--grep="+keyword, prettyLogFormat) - if all { +func (repo *Repository) searchCommits(id SHA1, opts SearchCommitsOptions) (*list.List, error) { + cmd := NewCommand("log", id.String(), "-100", "-i", prettyLogFormat) + if len(opts.Keywords) > 0 { + for _, v := range opts.Keywords { + cmd.AddArguments("--grep=" + v) + } + } + if len(opts.Authors) > 0 { + for _, v := range opts.Authors { + cmd.AddArguments("--author=" + v) + } + } + if len(opts.Committers) > 0 { + for _, v := range opts.Committers { + cmd.AddArguments("--committer=" + v) + } + } + if len(opts.After) > 0 { + cmd.AddArguments("--after=" + opts.After) + } + if len(opts.Before) > 0 { + cmd.AddArguments("--before=" + opts.Before) + } + if opts.All { cmd.AddArguments("--all") } stdout, err := cmd.RunInDirBytes(repo.Path) |