Skip to content

Commit 43c10de

Browse files
authored
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.
1 parent 548387b commit 43c10de

File tree

3 files changed

+20
-20
lines changed

3 files changed

+20
-20
lines changed

routers/web/repo/compare.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -112,17 +112,17 @@ func setCsvCompareContext(ctx *context.Context) {
112112
Error string
113113
}
114114

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 {
117117
return CsvDiffResult{nil, ""}
118118
}
119119

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

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
126126
}
127127

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

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)
142142
if baseBlobCloser != nil {
143143
defer baseBlobCloser.Close()
144144
}
145-
if err == errTooLarge {
146-
return CsvDiffResult{nil, err.Error()}
147-
}
148145
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"}
151151
}
152152

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)
154154
if headBlobCloser != nil {
155155
defer headBlobCloser.Close()
156156
}
157-
if err == errTooLarge {
158-
return CsvDiffResult{nil, err.Error()}
159-
}
160157
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"}
163163
}
164164

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

templates/repo/diff/box.tmpl

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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)