forked from gitea/gitea
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.
This commit is contained in:
parent
548387b2be
commit
43c10def68
|
@ -112,17 +112,17 @@ func setCsvCompareContext(ctx *context.Context) {
|
||||||
Error string
|
Error string
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.Data["CreateCsvDiff"] = func(diffFile *gitdiff.DiffFile, baseCommit, headCommit *git.Commit) CsvDiffResult {
|
ctx.Data["CreateCsvDiff"] = func(diffFile *gitdiff.DiffFile, baseBlob, headBlob *git.Blob) CsvDiffResult {
|
||||||
if diffFile == nil || baseCommit == nil || headCommit == nil {
|
if diffFile == nil {
|
||||||
return CsvDiffResult{nil, ""}
|
return CsvDiffResult{nil, ""}
|
||||||
}
|
}
|
||||||
|
|
||||||
errTooLarge := errors.New(ctx.Locale.Tr("repo.error.csv.too_large"))
|
errTooLarge := errors.New(ctx.Locale.Tr("repo.error.csv.too_large"))
|
||||||
|
|
||||||
csvReaderFromCommit := func(ctx *markup.RenderContext, c *git.Commit) (*csv.Reader, io.Closer, error) {
|
csvReaderFromCommit := func(ctx *markup.RenderContext, blob *git.Blob) (*csv.Reader, io.Closer, error) {
|
||||||
blob, err := c.GetBlobByPath(diffFile.Name)
|
if blob == nil {
|
||||||
if err != nil {
|
// It's ok for blob to be nil (file added or deleted)
|
||||||
return nil, nil, err
|
return nil, nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if setting.UI.CSV.MaxFileSize != 0 && setting.UI.CSV.MaxFileSize < blob.Size() {
|
if setting.UI.CSV.MaxFileSize != 0 && setting.UI.CSV.MaxFileSize < blob.Size() {
|
||||||
|
@ -138,28 +138,28 @@ func setCsvCompareContext(ctx *context.Context) {
|
||||||
return csvReader, reader, err
|
return csvReader, reader, err
|
||||||
}
|
}
|
||||||
|
|
||||||
baseReader, baseBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.OldName}, baseCommit)
|
baseReader, baseBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.OldName}, baseBlob)
|
||||||
if baseBlobCloser != nil {
|
if baseBlobCloser != nil {
|
||||||
defer baseBlobCloser.Close()
|
defer baseBlobCloser.Close()
|
||||||
}
|
}
|
||||||
if err == errTooLarge {
|
|
||||||
return CsvDiffResult{nil, err.Error()}
|
|
||||||
}
|
|
||||||
if err != nil {
|
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)
|
if err == errTooLarge {
|
||||||
return CsvDiffResult{nil, "unable to load file from base commit"}
|
return CsvDiffResult{nil, err.Error()}
|
||||||
|
}
|
||||||
|
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)
|
||||||
|
return CsvDiffResult{nil, "unable to load file"}
|
||||||
}
|
}
|
||||||
|
|
||||||
headReader, headBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.Name}, headCommit)
|
headReader, headBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.Name}, headBlob)
|
||||||
if headBlobCloser != nil {
|
if headBlobCloser != nil {
|
||||||
defer headBlobCloser.Close()
|
defer headBlobCloser.Close()
|
||||||
}
|
}
|
||||||
if err == errTooLarge {
|
|
||||||
return CsvDiffResult{nil, err.Error()}
|
|
||||||
}
|
|
||||||
if err != nil {
|
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)
|
if err == errTooLarge {
|
||||||
return CsvDiffResult{nil, "unable to load file from head commit"}
|
return CsvDiffResult{nil, err.Error()}
|
||||||
|
}
|
||||||
|
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)
|
||||||
|
return CsvDiffResult{nil, "unable to load file"}
|
||||||
}
|
}
|
||||||
|
|
||||||
sections, err := gitdiff.CreateCsvDiff(diffFile, baseReader, headReader)
|
sections, err := gitdiff.CreateCsvDiff(diffFile, baseReader, headReader)
|
||||||
|
|
|
@ -153,7 +153,7 @@
|
||||||
{{if $isImage}}
|
{{if $isImage}}
|
||||||
{{template "repo/diff/image_diff" dict "file" . "root" $ "blobBase" $blobBase "blobHead" $blobHead}}
|
{{template "repo/diff/image_diff" dict "file" . "root" $ "blobBase" $blobBase "blobHead" $blobHead}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{template "repo/diff/csv_diff" dict "file" . "root" $}}
|
{{template "repo/diff/csv_diff" dict "file" . "root" $ "blobBase" $blobBase "blobHead" $blobHead}}
|
||||||
{{end}}
|
{{end}}
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{$result := call .root.CreateCsvDiff .file .root.BaseCommit .root.HeadCommit}}
|
{{$result := call .root.CreateCsvDiff .file .blobBase .blobHead}}
|
||||||
{{if $result.Error}}
|
{{if $result.Error}}
|
||||||
<div class="ui center">{{$result.Error}}</div>
|
<div class="ui center">{{$result.Error}}</div>
|
||||||
{{else if $result.Sections}}
|
{{else if $result.Sections}}
|
||||||
|
|
Loading…
Reference in New Issue