diff options
author | Unknwon <u@gogs.io> | 2018-03-02 02:17:04 -0500 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2018-03-02 02:17:04 -0500 |
commit | 17d2a9c4353252caf304733b134fb347f4af4e78 (patch) | |
tree | df6b69f91def067aef0540044f287fe0187641fc /vendor/github.com/gogits | |
parent | 6f2347fc71f17b5703a9b1f383a2d3451f88b741 (diff) |
vendor: update github.com/gogits/git-module
Diffstat (limited to 'vendor/github.com/gogits')
-rw-r--r-- | vendor/github.com/gogits/git-module/blob.go | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/vendor/github.com/gogits/git-module/blob.go b/vendor/github.com/gogits/git-module/blob.go index 478682e7..7731226d 100644 --- a/vendor/github.com/gogits/git-module/blob.go +++ b/vendor/github.com/gogits/git-module/blob.go @@ -18,11 +18,16 @@ type Blob struct { // Data gets content of blob all at once and wrap it as io.Reader. // This can be very slow and memory consuming for huge content. func (b *Blob) Data() (io.Reader, error) { - stdout, err := NewCommand("show", b.ID.String()).RunInDirBytes(b.repo.Path) - if err != nil { - return nil, err + stdout := new(bytes.Buffer) + stderr := new(bytes.Buffer) + + // Preallocate memory to save ~50% memory usage on big files. + stdout.Grow(int(b.Size() + 2048)) + + if err := b.DataPipeline(stdout, stderr); err != nil { + return nil, concatenateError(err, stderr.String()) } - return bytes.NewBuffer(stdout), nil + return stdout, nil } func (b *Blob) DataPipeline(stdout, stderr io.Writer) error { |