Correctly handle moved files in apply patch (#22118)

Moved files in a patch will result in git apply returning:

```
error: {filename}: No such file or directory
```

This wasn't handled by the git apply patch code. This PR adds handling
for this.

Fix #22083

Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
zeripath 2022-12-14 13:45:33 +00:00 committed by GitHub
parent 1b32ed014a
commit cdc43454a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -53,6 +53,8 @@ var patchErrorSuffices = []string{
": patch does not apply", ": patch does not apply",
": already exists in working directory", ": already exists in working directory",
"unrecognized input", "unrecognized input",
": No such file or directory",
": does not exist in index",
} }
// TestPatch will test whether a simple patch will apply // TestPatch will test whether a simple patch will apply
@ -416,6 +418,7 @@ func checkConflicts(ctx context.Context, pr *issues_model.PullRequest, gitRepo *
scanner := bufio.NewScanner(stderrReader) scanner := bufio.NewScanner(stderrReader)
for scanner.Scan() { for scanner.Scan() {
line := scanner.Text() line := scanner.Text()
log.Trace("PullRequest[%d].testPatch: stderr: %s", pr.ID, line)
if strings.HasPrefix(line, prefix) { if strings.HasPrefix(line, prefix) {
conflict = true conflict = true
filepath := strings.TrimSpace(strings.Split(line[len(prefix):], ":")[0]) filepath := strings.TrimSpace(strings.Split(line[len(prefix):], ":")[0])