loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix CSV diff for added/deleted files (#21189)

Fixes #21184
Regression of #19552

Instead of using `GetBlobByPath` I use the already existing instances.

We need more information from #19530 if that error is still present.

authored by

KN4CK3R and committed by
GitHub
43c10def 548387b2

+20 -20
+18 -18
routers/web/repo/compare.go
··· 112 112 Error string 113 113 } 114 114 115 - ctx.Data["CreateCsvDiff"] = func(diffFile *gitdiff.DiffFile, baseCommit, headCommit *git.Commit) CsvDiffResult { 116 - if diffFile == nil || baseCommit == nil || headCommit == nil { 115 + ctx.Data["CreateCsvDiff"] = func(diffFile *gitdiff.DiffFile, baseBlob, headBlob *git.Blob) CsvDiffResult { 116 + if diffFile == nil { 117 117 return CsvDiffResult{nil, ""} 118 118 } 119 119 120 120 errTooLarge := errors.New(ctx.Locale.Tr("repo.error.csv.too_large")) 121 121 122 - csvReaderFromCommit := func(ctx *markup.RenderContext, c *git.Commit) (*csv.Reader, io.Closer, error) { 123 - blob, err := c.GetBlobByPath(diffFile.Name) 124 - if err != nil { 125 - return nil, nil, err 122 + csvReaderFromCommit := func(ctx *markup.RenderContext, blob *git.Blob) (*csv.Reader, io.Closer, error) { 123 + if blob == nil { 124 + // It's ok for blob to be nil (file added or deleted) 125 + return nil, nil, nil 126 126 } 127 127 128 128 if setting.UI.CSV.MaxFileSize != 0 && setting.UI.CSV.MaxFileSize < blob.Size() { ··· 138 138 return csvReader, reader, err 139 139 } 140 140 141 - baseReader, baseBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.OldName}, baseCommit) 141 + baseReader, baseBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.OldName}, baseBlob) 142 142 if baseBlobCloser != nil { 143 143 defer baseBlobCloser.Close() 144 144 } 145 - if err == errTooLarge { 146 - return CsvDiffResult{nil, err.Error()} 147 - } 148 145 if err != nil { 149 - 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) 150 - return CsvDiffResult{nil, "unable to load file from base commit"} 146 + if err == errTooLarge { 147 + return CsvDiffResult{nil, err.Error()} 148 + } 149 + log.Error("error whilst creating csv.Reader from file %s in base commit %s in %s: %v", diffFile.Name, baseBlob.ID.String(), ctx.Repo.Repository.Name, err) 150 + return CsvDiffResult{nil, "unable to load file"} 151 151 } 152 152 153 - headReader, headBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.Name}, headCommit) 153 + headReader, headBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.Name}, headBlob) 154 154 if headBlobCloser != nil { 155 155 defer headBlobCloser.Close() 156 156 } 157 - if err == errTooLarge { 158 - return CsvDiffResult{nil, err.Error()} 159 - } 160 157 if err != nil { 161 - 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) 162 - return CsvDiffResult{nil, "unable to load file from head commit"} 158 + if err == errTooLarge { 159 + return CsvDiffResult{nil, err.Error()} 160 + } 161 + log.Error("error whilst creating csv.Reader from file %s in head commit %s in %s: %v", diffFile.Name, headBlob.ID.String(), ctx.Repo.Repository.Name, err) 162 + return CsvDiffResult{nil, "unable to load file"} 163 163 } 164 164 165 165 sections, err := gitdiff.CreateCsvDiff(diffFile, baseReader, headReader)
+1 -1
templates/repo/diff/box.tmpl
··· 153 153 {{if $isImage}} 154 154 {{template "repo/diff/image_diff" dict "file" . "root" $ "blobBase" $blobBase "blobHead" $blobHead}} 155 155 {{else}} 156 - {{template "repo/diff/csv_diff" dict "file" . "root" $}} 156 + {{template "repo/diff/csv_diff" dict "file" . "root" $ "blobBase" $blobBase "blobHead" $blobHead}} 157 157 {{end}} 158 158 </table> 159 159 </div>
+1 -1
templates/repo/diff/csv_diff.tmpl
··· 1 1 <tr> 2 2 <td> 3 - {{$result := call .root.CreateCsvDiff .file .root.BaseCommit .root.HeadCommit}} 3 + {{$result := call .root.CreateCsvDiff .file .blobBase .blobHead}} 4 4 {{if $result.Error}} 5 5 <div class="ui center">{{$result.Error}}</div> 6 6 {{else if $result.Sections}}