From 908bd64238f22fefebde36b5bbd84919d37ccf00 Mon Sep 17 00:00:00 2001 From: Shiny Nematoda Date: Wed, 30 Oct 2024 14:45:18 +0000 Subject: [PATCH] fix(grep): fix git-grep for code search when git version is below 2.38 (cherry picked from commit f2ab4ff83a29855834c920ef188f875a2d5401ad) Conflicts: modules/git/grep.go trivial context conflict --- modules/git/grep.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/modules/git/grep.go b/modules/git/grep.go index 5572bd994f..41466bf537 100644 --- a/modules/git/grep.go +++ b/modules/git/grep.go @@ -17,6 +17,7 @@ import ( "strings" "time" + "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" ) @@ -30,7 +31,7 @@ type GrepResult struct { type GrepOptions struct { RefName string MaxResultLimit int - MatchesPerFile int + MatchesPerFile int // >= git 2.38 ContextLineNumber int IsFuzzy bool PathSpec []setting.Glob @@ -77,7 +78,14 @@ func GrepSearch(ctx context.Context, repo *Repository, search string, opts GrepO "-I", "--null", "--break", "--heading", "--column", "--fixed-strings", "--line-number", "--ignore-case", "--full-name") cmd.AddOptionValues("--context", fmt.Sprint(opts.ContextLineNumber)) - cmd.AddOptionValues("--max-count", fmt.Sprint(opts.MatchesPerFile)) + + // --max-count requires at least git 2.38 + if CheckGitVersionAtLeast("2.38.0") == nil { + cmd.AddOptionValues("--max-count", fmt.Sprint(opts.MatchesPerFile)) + } else { + log.Warn("git-grep: --max-count requires at least git 2.38") + } + words := []string{search} if opts.IsFuzzy { words = strings.Fields(search)