@ -113,17 +113,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 ( ) {
@ -139,28 +139,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 != nil {
if err == errTooLarge {
if err == errTooLarge {
return CsvDiffResult { nil , err . Error ( ) }
return CsvDiffResult { nil , err . Error ( ) }
}
}
if err != nil {
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 )
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" }
return CsvDiffResult { nil , "unable to load file from base commit" }
}
}
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 != nil {
if err == errTooLarge {
if err == errTooLarge {
return CsvDiffResult { nil , err . Error ( ) }
return CsvDiffResult { nil , err . Error ( ) }
}
}
if err != nil {
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 )
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" }
return CsvDiffResult { nil , "unable to load file from head commit" }
}
}
sections , err := gitdiff . CreateCsvDiff ( diffFile , baseReader , headReader )
sections , err := gitdiff . CreateCsvDiff ( diffFile , baseReader , headReader )