Skip to content

Commit 7a220b6

Browse files
KN4CK3Rwxiaoguang
authored andcommitted
Fix CSV diff for added/deleted files (go-gitea#21189)
Fixes go-gitea#21184 Regression of go-gitea#19552 Instead of using `GetBlobByPath` I use the already existing instances. We need more information from go-gitea#19530 if that error is still present.
1 parent 2dcea78 commit 7a220b6

File tree

3 files changed

+20
-20
lines changed

3 files changed

+20
-20
lines changed

routers/web/repo/compare.go

+18-18
Original file line numberDiff line numberDiff line change
@@ -113,17 +113,17 @@ func setCsvCompareContext(ctx *context.Context) {
113113
Error string
114114
}
115115

116-
ctx.Data["CreateCsvDiff"] = func(diffFile *gitdiff.DiffFile, baseCommit, headCommit *git.Commit) CsvDiffResult {
117-
if diffFile == nil || baseCommit == nil || headCommit == nil {
116+
ctx.Data["CreateCsvDiff"] = func(diffFile *gitdiff.DiffFile, baseBlob, headBlob *git.Blob) CsvDiffResult {
117+
if diffFile == nil {
118118
return CsvDiffResult{nil, ""}
119119
}
120120

121121
errTooLarge := errors.New(ctx.Locale.Tr("repo.error.csv.too_large"))
122122

123-
csvReaderFromCommit := func(ctx *markup.RenderContext, c *git.Commit) (*csv.Reader, io.Closer, error) {
124-
blob, err := c.GetBlobByPath(diffFile.Name)
125-
if err != nil {
126-
return nil, nil, err
123+
csvReaderFromCommit := func(ctx *markup.RenderContext, blob *git.Blob) (*csv.Reader, io.Closer, error) {
124+
if blob == nil {
125+
// It's ok for blob to be nil (file added or deleted)
126+
return nil, nil, nil
127127
}
128128

129129
if setting.UI.CSV.MaxFileSize != 0 && setting.UI.CSV.MaxFileSize < blob.Size() {
@@ -139,28 +139,28 @@ func setCsvCompareContext(ctx *context.Context) {
139139
return csvReader, reader, err
140140
}
141141

142-
baseReader, baseBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.OldName}, baseCommit)
142+
baseReader, baseBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.OldName}, baseBlob)
143143
if baseBlobCloser != nil {
144144
defer baseBlobCloser.Close()
145145
}
146-
if err == errTooLarge {
147-
return CsvDiffResult{nil, err.Error()}
148-
}
149146
if err != nil {
150-
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)
151-
return CsvDiffResult{nil, "unable to load file from base commit"}
147+
if err == errTooLarge {
148+
return CsvDiffResult{nil, err.Error()}
149+
}
150+
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)
151+
return CsvDiffResult{nil, "unable to load file"}
152152
}
153153

154-
headReader, headBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.Name}, headCommit)
154+
headReader, headBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.Name}, headBlob)
155155
if headBlobCloser != nil {
156156
defer headBlobCloser.Close()
157157
}
158-
if err == errTooLarge {
159-
return CsvDiffResult{nil, err.Error()}
160-
}
161158
if err != nil {
162-
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)
163-
return CsvDiffResult{nil, "unable to load file from head commit"}
159+
if err == errTooLarge {
160+
return CsvDiffResult{nil, err.Error()}
161+
}
162+
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)
163+
return CsvDiffResult{nil, "unable to load file"}
164164
}
165165

166166
sections, err := gitdiff.CreateCsvDiff(diffFile, baseReader, headReader)

templates/repo/diff/box.tmpl

+1-1
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@
153153
{{if $isImage}}
154154
{{template "repo/diff/image_diff" dict "file" . "root" $ "blobBase" $blobBase "blobHead" $blobHead}}
155155
{{else}}
156-
{{template "repo/diff/csv_diff" dict "file" . "root" $}}
156+
{{template "repo/diff/csv_diff" dict "file" . "root" $ "blobBase" $blobBase "blobHead" $blobHead}}
157157
{{end}}
158158
</table>
159159
</div>

templates/repo/diff/csv_diff.tmpl

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<tr>
22
<td>
3-
{{$result := call .root.CreateCsvDiff .file .root.BaseCommit .root.HeadCommit}}
3+
{{$result := call .root.CreateCsvDiff .file .blobBase .blobHead}}
44
{{if $result.Error}}
55
<div class="ui center">{{$result.Error}}</div>
66
{{else if $result.Sections}}

0 commit comments

Comments
 (0)