| 108 | } |
| 109 | |
| 110 | func (p *CodeSearchProvider) runGitGrep(parentCtx context.Context, cmdArgs []string) (string, string, error) { |
| 111 | ctx, cancel := context.WithTimeout(parentCtx, gitGrepTimeout) |
| 112 | defer cancel() |
| 113 | |
| 114 | if p.FileReader.Runner != nil { |
| 115 | stdout, stderr, err := p.FileReader.Runner.RunSplit(ctx, p.FileReader.RepoDir, cmdArgs...) |
| 116 | if ctx.Err() != nil && err != nil { |
| 117 | return "", "", ctx.Err() |
| 118 | } |
| 119 | return stdout, stderr, err |
| 120 | } |
| 121 | |
| 122 | cmd := exec.CommandContext(ctx, "git", cmdArgs...) |
| 123 | cmd.Dir = p.FileReader.RepoDir |
| 124 | |
| 125 | var stdout, stderr bytes.Buffer |
| 126 | cmd.Stdout = &stdout |
| 127 | cmd.Stderr = &stderr |
| 128 | |
| 129 | err := cmd.Run() |
| 130 | if ctx.Err() != nil && err != nil && cmd.ProcessState != nil && cmd.ProcessState.ExitCode() == -1 { |
| 131 | return "", "", ctx.Err() |
| 132 | } |
| 133 | return stdout.String(), stderr.String(), err |
| 134 | } |
| 135 | |
| 136 | func (p *CodeSearchProvider) gitGrep(ctx context.Context, searchText string, caseSensitive bool, usePerlRegexp bool, pathspec []string) (string, error) { |
| 137 | cmdArgs := p.buildGrepArgs(searchText, caseSensitive, usePerlRegexp, false, pathspec) |