in internal/mode/advanced/git/gitaly.go [276:304]
func (gc *gitalyClient) getBlob(oid string) (io.ReadCloser, error) {
data := new(bytes.Buffer)
request := &pb.GetBlobRequest{
Repository: gc.repository,
Oid: oid,
Limit: gc.limitFileSize,
}
stream, err := gc.blobServiceClient.GetBlob(gc.ctx, request)
if err != nil {
return nil, fmt.Errorf("Cannot get blob: %s", oid)
}
for {
c, err := stream.Recv()
if errors.Is(err, io.EOF) {
break
}
if err != nil {
return nil, fmt.Errorf("%v.GetBlob: %w", c, err)
}
if c.Data != nil {
data.Write(c.Data)
}
}
return io.NopCloser(data), nil
}