aboutsummaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2022-12-14 13:45:33 +0000
committerGitHub <noreply@github.com>2022-12-14 21:45:33 +0800
commitcdc43454a49f97b663f885e18d0adc12253597a3 (patch)
treec6a110937dc72bf67d73d738cb587f42b57e43ff /services
parent1b32ed014a61216b75d80643df53e120606ca763 (diff)
downloadgitea-cdc43454a49f97b663f885e18d0adc12253597a3.tar.gz
gitea-cdc43454a49f97b663f885e18d0adc12253597a3.zip
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>
Diffstat (limited to 'services')
-rw-r--r--services/pull/patch.go3
1 files changed, 3 insertions, 0 deletions
diff --git a/services/pull/patch.go b/services/pull/patch.go
index 809b75e6b4..e0da410c4d 100644
--- a/services/pull/patch.go
+++ b/services/pull/patch.go
@@ -53,6 +53,8 @@ var patchErrorSuffices = []string{
": patch does not apply",
": already exists in working directory",
"unrecognized input",
+ ": No such file or directory",
+ ": does not exist in index",
}
// 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)
for scanner.Scan() {
line := scanner.Text()
+ log.Trace("PullRequest[%d].testPatch: stderr: %s", pr.ID, line)
if strings.HasPrefix(line, prefix) {
conflict = true
filepath := strings.TrimSpace(strings.Split(line[len(prefix):], ":")[0])