]> source.dussan.org Git - gitea.git/commitdiff
Ignore error when retrieving changed PR review files (#21487) (#21524)
authordelvh <leon@kske.dev>
Thu, 20 Oct 2022 15:25:54 +0000 (17:25 +0200)
committerGitHub <noreply@github.com>
Thu, 20 Oct 2022 15:25:54 +0000 (23:25 +0800)
When a PR reviewer reviewed a file on a commit that was later gc'ed,
they would always get a `500` response from then on when loading the PR.
This PR simply ignores that error and instead marks all files as
unchanged.
This approach was chosen as the only feasible option without diving into
**a lot** of error handling.

Fixes #21392
Backport of #21487

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
services/gitdiff/gitdiff.go

index ec4cbd52d56a9d8ebea65a77d8edfb800ad82e9d..7439f03f107f06f95cbf958ae31e027641d62671 100644 (file)
@@ -1505,8 +1505,13 @@ func SyncAndGetUserSpecificDiff(ctx context.Context, userID int64, pull *issues_
        }
 
        changedFiles, err := gitRepo.GetFilesChangedBetween(review.CommitSHA, latestCommit)
+       // There are way too many possible errors.
+       // Examples are various git errors such as the commit the review was based on was gc'ed and hence doesn't exist anymore as well as unrecoverable errors where we should serve a 500 response
+       // Due to the current architecture and physical limitation of needing to compare explicit error messages, we can only choose one approach without the code getting ugly
+       // For SOME of the errors such as the gc'ed commit, it would be best to mark all files as changed
+       // But as that does not work for all potential errors, we simply mark all files as unchanged and drop the error which always works, even if not as good as possible
        if err != nil {
-               return diff, err
+               log.Error("Could not get changed files between %s and %s for pull request %d in repo with path %s. Assuming no changes. Error: %w", review.CommitSHA, latestCommit, pull.Index, gitRepo.Path, err)
        }
 
        filesChangedSinceLastDiff := make(map[string]pull_model.ViewedState)