]> source.dussan.org Git - gitea.git/commitdiff
Handle the error of a missing blob object fix #19530 (#19552)
author99rgosse <61579380+99rgosse@users.noreply.github.com>
Mon, 2 May 2022 16:46:50 +0000 (18:46 +0200)
committerGitHub <noreply@github.com>
Mon, 2 May 2022 16:46:50 +0000 (18:46 +0200)
* Handle the error of a missing blob object

* Show error in logs

* as per @zeripath

* Add missing error check

* Add missing error check

* Update compare.go

* Use formal code

* Update compare.go

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: 6543 <6543@obermui.de>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
routers/web/repo/compare.go

index 7721507baea936e8aa012e860697acbca2249060..d483227ebf29d1c46fa367aee896b7e1d29568b3 100644 (file)
@@ -143,6 +143,11 @@ func setCsvCompareContext(ctx *context.Context) {
                if err == errTooLarge {
                        return CsvDiffResult{nil, err.Error()}
                }
+               if err != nil {
+                       log.Error("CreateCsvDiff error whilst creating baseReader from file %s in commit %s in %s: %v", diffFile.Name, baseCommit.ID.String(), ctx.Repo.Repository.Name, err)
+                       return CsvDiffResult{nil, "unable to load file from base commit"}
+               }
+
                headReader, headBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, Filename: diffFile.Name}, headCommit)
                if headBlobCloser != nil {
                        defer headBlobCloser.Close()
@@ -150,13 +155,17 @@ func setCsvCompareContext(ctx *context.Context) {
                if err == errTooLarge {
                        return CsvDiffResult{nil, err.Error()}
                }
+               if err != nil {
+                       log.Error("CreateCsvDiff error whilst creating headReader from file %s in commit %s in %s: %v", diffFile.Name, headCommit.ID.String(), ctx.Repo.Repository.Name, err)
+                       return CsvDiffResult{nil, "unable to load file from head commit"}
+               }
 
                sections, err := gitdiff.CreateCsvDiff(diffFile, baseReader, headReader)
                if err != nil {
                        errMessage, err := csv_module.FormatError(err, ctx.Locale)
                        if err != nil {
-                               log.Error("RenderCsvDiff failed: %v", err)
-                               return CsvDiffResult{nil, ""}
+                               log.Error("CreateCsvDiff FormatError failed: %v", err)
+                               return CsvDiffResult{nil, "unknown csv diff error"}
                        }
                        return CsvDiffResult{nil, errMessage}
                }