// Copyright 2015 The Gogs Authors. All rights reserved.// Use of this source code is governed by a MIT-style// license that can be found in the LICENSE file.packagegitimport("bytes""io")// Blob represents a Git object.typeBlobstruct{repo*Repository*TreeEntry}// 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:=new(bytes.Buffer)stderr:=new(bytes.Buffer)// Preallocate memory to save ~50% memory usage on big files.stdout.Grow(int(b.Size()+2048))iferr:=b.DataPipeline(stdout,stderr);err!=nil{returnnil,concatenateError(err,stderr.String())}returnstdout,nil}func(b*Blob)DataPipeline(stdout,stderrio.Writer)error{returnNewCommand("show",b.ID.String()).RunInDirPipeline(b.repo.Path,stdout,stderr)}