aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/gogits
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2018-03-02 02:17:04 -0500
committerUnknwon <u@gogs.io>2018-03-02 02:17:04 -0500
commit17d2a9c4353252caf304733b134fb347f4af4e78 (patch)
treedf6b69f91def067aef0540044f287fe0187641fc /vendor/github.com/gogits
parent6f2347fc71f17b5703a9b1f383a2d3451f88b741 (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.go13
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 {