Commit 9136ca98 authored by Ahmad Sherif's avatar Ahmad Sherif

Use GetBlob RPC instead of TreeEntry RPC for serving blobs

parent 23e62f51
...@@ -2,7 +2,6 @@ package main ...@@ -2,7 +2,6 @@ package main
import ( import (
"bytes" "bytes"
"encoding/base64"
"fmt" "fmt"
"math/rand" "math/rand"
"net" "net"
...@@ -331,13 +330,12 @@ func TestGetBlobProxiedToGitalySuccessfully(t *testing.T) { ...@@ -331,13 +330,12 @@ func TestGetBlobProxiedToGitalySuccessfully(t *testing.T) {
defer gitalyServer.Stop() defer gitalyServer.Stop()
gitalyAddress := "unix://" + socketPath gitalyAddress := "unix://" + socketPath
pathEncoded := base64.StdEncoding.EncodeToString([]byte("LICENSE"))
repoStorage := "default" repoStorage := "default"
revisionEncoded := base64.StdEncoding.EncodeToString([]byte("54fcc214b94e78d7a41a9a8fe6d87a5e59500e51")) oid := "54fcc214b94e78d7a41a9a8fe6d87a5e59500e51"
repoRelativePath := "foo/bar.git" repoRelativePath := "foo/bar.git"
jsonParams := fmt.Sprintf(`{"GitalyServer":{"Address":"%s","Token":""},"TreeEntryRequest":{"repository":{"storage_name":"%s","relative_path":"%s"},"revision":"%s","path":"%s"}}`, jsonParams := fmt.Sprintf(`{"GitalyServer":{"Address":"%s","Token":""},"GetBlobRequest":{"repository":{"storage_name":"%s","relative_path":"%s"},"oid":"%s","limit":-1}}`,
gitalyAddress, repoStorage, repoRelativePath, revisionEncoded, pathEncoded) gitalyAddress, repoStorage, repoRelativePath, oid)
expectedBody := testhelper.GitalyTreeEntryResponseMock expectedBody := testhelper.GitalyGetBlobResponseMock
blobLength := len(expectedBody) blobLength := len(expectedBody)
resp, body, err := doSendDataRequest("/something", "git-blob", jsonParams) resp, body, err := doSendDataRequest("/something", "git-blob", jsonParams)
...@@ -354,12 +352,11 @@ func TestGetBlobProxiedToGitalyInterruptedStream(t *testing.T) { ...@@ -354,12 +352,11 @@ func TestGetBlobProxiedToGitalyInterruptedStream(t *testing.T) {
defer gitalyServer.Stop() defer gitalyServer.Stop()
gitalyAddress := "unix://" + socketPath gitalyAddress := "unix://" + socketPath
pathEncoded := base64.StdEncoding.EncodeToString([]byte("LICENSE"))
repoStorage := "default" repoStorage := "default"
revisionEncoded := base64.StdEncoding.EncodeToString([]byte("54fcc214b94e78d7a41a9a8fe6d87a5e59500e51")) oid := "54fcc214b94e78d7a41a9a8fe6d87a5e59500e51"
repoRelativePath := "foo/bar.git" repoRelativePath := "foo/bar.git"
jsonParams := fmt.Sprintf(`{"GitalyServer":{"Address":"%s","Token":""},"TreeEntryRequest":{"repository":{"storage_name":"%s","relative_path":"%s"},"revision":"%s","path":"%s"}}`, jsonParams := fmt.Sprintf(`{"GitalyServer":{"Address":"%s","Token":""},"GetBlobRequest":{"repository":{"storage_name":"%s","relative_path":"%s"},"oid":"%s","limit":-1}}`,
gitalyAddress, repoStorage, repoRelativePath, revisionEncoded, pathEncoded) gitalyAddress, repoStorage, repoRelativePath, oid)
resp, _, err := doSendDataRequest("/something", "git-blob", jsonParams) resp, _, err := doSendDataRequest("/something", "git-blob", jsonParams)
require.NoError(t, err) require.NoError(t, err)
...@@ -397,7 +394,7 @@ func startGitalyServer(t *testing.T, finalMessageCode codes.Code) (*combinedServ ...@@ -397,7 +394,7 @@ func startGitalyServer(t *testing.T, finalMessageCode codes.Code) (*combinedServ
gitalyServer := testhelper.NewGitalyServer(finalMessageCode) gitalyServer := testhelper.NewGitalyServer(finalMessageCode)
pb.RegisterSmartHTTPServer(server, gitalyServer) pb.RegisterSmartHTTPServer(server, gitalyServer)
pb.RegisterCommitServer(server, gitalyServer) pb.RegisterBlobServiceServer(server, gitalyServer)
go server.Serve(listener) go server.Serve(listener)
......
...@@ -16,10 +16,10 @@ import ( ...@@ -16,10 +16,10 @@ import (
type blob struct{ senddata.Prefix } type blob struct{ senddata.Prefix }
type blobParams struct { type blobParams struct {
RepoPath string RepoPath string
BlobId string BlobId string
GitalyServer gitaly.Server GitalyServer gitaly.Server
TreeEntryRequest pb.TreeEntryRequest GetBlobRequest pb.GetBlobRequest
} }
var SendBlob = &blob{"git-blob:"} var SendBlob = &blob{"git-blob:"}
...@@ -39,13 +39,13 @@ func (b *blob) Inject(w http.ResponseWriter, r *http.Request, sendData string) { ...@@ -39,13 +39,13 @@ func (b *blob) Inject(w http.ResponseWriter, r *http.Request, sendData string) {
} }
func handleSendBlobWithGitaly(w http.ResponseWriter, r *http.Request, params *blobParams) { func handleSendBlobWithGitaly(w http.ResponseWriter, r *http.Request, params *blobParams) {
commitClient, err := gitaly.NewCommitClient(params.GitalyServer) blobClient, err := gitaly.NewBlobClient(params.GitalyServer)
if err != nil { if err != nil {
helper.Fail500(w, r, fmt.Errorf("commit.GetBlob: %v", err)) helper.Fail500(w, r, fmt.Errorf("blob.GetBlob: %v", err))
} }
if err := commitClient.SendBlob(r.Context(), w, &params.TreeEntryRequest); err != nil { if err := blobClient.SendBlob(r.Context(), w, &params.GetBlobRequest); err != nil {
helper.Fail500(w, r, fmt.Errorf("commit.GetBlob: %v", err)) helper.Fail500(w, r, fmt.Errorf("blob.GetBlob: %v", err))
} }
} }
......
...@@ -11,12 +11,12 @@ import ( ...@@ -11,12 +11,12 @@ import (
"gitlab.com/gitlab-org/gitaly/streamio" "gitlab.com/gitlab-org/gitaly/streamio"
) )
type CommitClient struct { type BlobClient struct {
pb.CommitClient pb.BlobServiceClient
} }
func (client *CommitClient) SendBlob(ctx context.Context, w http.ResponseWriter, request *pb.TreeEntryRequest) error { func (client *BlobClient) SendBlob(ctx context.Context, w http.ResponseWriter, request *pb.GetBlobRequest) error {
c, err := client.TreeEntry(ctx, request) c, err := client.GetBlob(ctx, request)
if err != nil { if err != nil {
return fmt.Errorf("rpc failed: %v", err) return fmt.Errorf("rpc failed: %v", err)
} }
......
...@@ -36,13 +36,13 @@ func NewSmartHTTPClient(server Server) (*SmartHTTPClient, error) { ...@@ -36,13 +36,13 @@ func NewSmartHTTPClient(server Server) (*SmartHTTPClient, error) {
return &SmartHTTPClient{grpcClient}, nil return &SmartHTTPClient{grpcClient}, nil
} }
func NewCommitClient(server Server) (*CommitClient, error) { func NewBlobClient(server Server) (*BlobClient, error) {
conn, err := getOrCreateConnection(server) conn, err := getOrCreateConnection(server)
if err != nil { if err != nil {
return nil, err return nil, err
} }
grpcClient := pb.NewCommitClient(conn) grpcClient := pb.NewBlobServiceClient(conn)
return &CommitClient{grpcClient}, nil return &BlobClient{grpcClient}, nil
} }
func getOrCreateConnection(server Server) (*grpc.ClientConn, error) { func getOrCreateConnection(server Server) (*grpc.ClientConn, error) {
......
...@@ -23,7 +23,7 @@ type GitalyTestServer struct { ...@@ -23,7 +23,7 @@ type GitalyTestServer struct {
var ( var (
GitalyInfoRefsResponseMock = strings.Repeat("Mock Gitaly InfoRefsResponse data", 100000) GitalyInfoRefsResponseMock = strings.Repeat("Mock Gitaly InfoRefsResponse data", 100000)
GitalyTreeEntryResponseMock = strings.Repeat("Mock Gitaly TreeEntryResponse data", 100000) GitalyGetBlobResponseMock = strings.Repeat("Mock Gitaly GetBlobResponse data", 100000)
GitalyReceivePackResponseMock []byte GitalyReceivePackResponseMock []byte
GitalyUploadPackResponseMock []byte GitalyUploadPackResponseMock []byte
) )
...@@ -173,7 +173,7 @@ func (s *GitalyTestServer) CommitIsAncestor(ctx context.Context, in *pb.CommitIs ...@@ -173,7 +173,7 @@ func (s *GitalyTestServer) CommitIsAncestor(ctx context.Context, in *pb.CommitIs
return nil, nil return nil, nil
} }
func (s *GitalyTestServer) TreeEntry(in *pb.TreeEntryRequest, stream pb.Commit_TreeEntryServer) error { func (s *GitalyTestServer) GetBlob(in *pb.GetBlobRequest, stream pb.BlobService_GetBlobServer) error {
s.WaitGroup.Add(1) s.WaitGroup.Add(1)
defer s.WaitGroup.Done() defer s.WaitGroup.Done()
...@@ -181,13 +181,11 @@ func (s *GitalyTestServer) TreeEntry(in *pb.TreeEntryRequest, stream pb.Commit_T ...@@ -181,13 +181,11 @@ func (s *GitalyTestServer) TreeEntry(in *pb.TreeEntryRequest, stream pb.Commit_T
return err return err
} }
response := &pb.TreeEntryResponse{ response := &pb.GetBlobResponse{
Type: pb.TreeEntryResponse_BLOB, Oid: in.GetOid(),
Oid: "deadfacedeadfacedeadfacedeadfacedeadface", Size: int64(len(GitalyGetBlobResponseMock)),
Size: int64(len(GitalyTreeEntryResponseMock)),
Mode: 0100644,
} }
nSends, err := sendBytes([]byte(GitalyTreeEntryResponseMock), 100, func(p []byte) error { nSends, err := sendBytes([]byte(GitalyGetBlobResponseMock), 100, func(p []byte) error {
response.Data = p response.Data = p
if err := stream.Send(response); err != nil { if err := stream.Send(response); err != nil {
...@@ -195,7 +193,7 @@ func (s *GitalyTestServer) TreeEntry(in *pb.TreeEntryRequest, stream pb.Commit_T ...@@ -195,7 +193,7 @@ func (s *GitalyTestServer) TreeEntry(in *pb.TreeEntryRequest, stream pb.Commit_T
} }
// Use a new response so we don't send other fields (Size, ...) over and over // Use a new response so we don't send other fields (Size, ...) over and over
response = &pb.TreeEntryResponse{} response = &pb.GetBlobResponse{}
return nil return nil
}) })
......
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: blob.proto
/*
Package gitaly is a generated protocol buffer package.
It is generated from these files:
blob.proto
commit.proto
deprecated-services.proto
diff.proto
notifications.proto
ref.proto
repository-service.proto
shared.proto
smarthttp.proto
ssh.proto
It has these top-level messages:
GetBlobRequest
GetBlobResponse
CommitIsAncestorRequest
CommitIsAncestorResponse
TreeEntryRequest
TreeEntryResponse
CommitsBetweenRequest
CommitsBetweenResponse
CountCommitsRequest
CountCommitsResponse
TreeEntry
GetTreeEntriesRequest
GetTreeEntriesResponse
CommitDiffRequest
CommitDiffResponse
CommitDeltaRequest
CommitDelta
CommitDeltaResponse
PostReceiveRequest
PostReceiveResponse
FindDefaultBranchNameRequest
FindDefaultBranchNameResponse
FindAllBranchNamesRequest
FindAllBranchNamesResponse
FindAllTagNamesRequest
FindAllTagNamesResponse
FindRefNameRequest
FindRefNameResponse
FindLocalBranchesRequest
FindLocalBranchesResponse
FindLocalBranchResponse
FindLocalBranchCommitAuthor
RepositoryExistsRequest
RepositoryExistsResponse
Repository
GitCommit
CommitAuthor
ExitStatus
InfoRefsRequest
InfoRefsResponse
PostUploadPackRequest
PostUploadPackResponse
PostReceivePackRequest
PostReceivePackResponse
SSHUploadPackRequest
SSHUploadPackResponse
SSHReceivePackRequest
SSHReceivePackResponse
*/
package gitaly
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
type GetBlobRequest struct {
Repository *Repository `protobuf:"bytes,1,opt,name=repository" json:"repository,omitempty"`
// Object ID (SHA1) of the blob we want to get
Oid string `protobuf:"bytes,2,opt,name=oid" json:"oid,omitempty"`
// Maximum number of bytes we want to receive. Use '-1' to get the full blob no matter how big.
Limit int64 `protobuf:"varint,3,opt,name=limit" json:"limit,omitempty"`
}
func (m *GetBlobRequest) Reset() { *m = GetBlobRequest{} }
func (m *GetBlobRequest) String() string { return proto.CompactTextString(m) }
func (*GetBlobRequest) ProtoMessage() {}
func (*GetBlobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
func (m *GetBlobRequest) GetRepository() *Repository {
if m != nil {
return m.Repository
}
return nil
}
func (m *GetBlobRequest) GetOid() string {
if m != nil {
return m.Oid
}
return ""
}
func (m *GetBlobRequest) GetLimit() int64 {
if m != nil {
return m.Limit
}
return 0
}
type GetBlobResponse struct {
// Blob size; present only in first response message
Size int64 `protobuf:"varint,1,opt,name=size" json:"size,omitempty"`
// Chunk of blob data
Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
// Object ID of the actual blob returned. Empty if no blob was found.
Oid string `protobuf:"bytes,3,opt,name=oid" json:"oid,omitempty"`
}
func (m *GetBlobResponse) Reset() { *m = GetBlobResponse{} }
func (m *GetBlobResponse) String() string { return proto.CompactTextString(m) }
func (*GetBlobResponse) ProtoMessage() {}
func (*GetBlobResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
func (m *GetBlobResponse) GetSize() int64 {
if m != nil {
return m.Size
}
return 0
}
func (m *GetBlobResponse) GetData() []byte {
if m != nil {
return m.Data
}
return nil
}
func (m *GetBlobResponse) GetOid() string {
if m != nil {
return m.Oid
}
return ""
}
func init() {
proto.RegisterType((*GetBlobRequest)(nil), "gitaly.GetBlobRequest")
proto.RegisterType((*GetBlobResponse)(nil), "gitaly.GetBlobResponse")
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// Client API for BlobService service
type BlobServiceClient interface {
// GetBlob returns the contents of a blob object referenced by its object
// ID. We use a stream to return a chunked arbitrarily large binary
// response
GetBlob(ctx context.Context, in *GetBlobRequest, opts ...grpc.CallOption) (BlobService_GetBlobClient, error)
}
type blobServiceClient struct {
cc *grpc.ClientConn
}
func NewBlobServiceClient(cc *grpc.ClientConn) BlobServiceClient {
return &blobServiceClient{cc}
}
func (c *blobServiceClient) GetBlob(ctx context.Context, in *GetBlobRequest, opts ...grpc.CallOption) (BlobService_GetBlobClient, error) {
stream, err := grpc.NewClientStream(ctx, &_BlobService_serviceDesc.Streams[0], c.cc, "/gitaly.BlobService/GetBlob", opts...)
if err != nil {
return nil, err
}
x := &blobServiceGetBlobClient{stream}
if err := x.ClientStream.SendMsg(in); err != nil {
return nil, err
}
if err := x.ClientStream.CloseSend(); err != nil {
return nil, err
}
return x, nil
}
type BlobService_GetBlobClient interface {
Recv() (*GetBlobResponse, error)
grpc.ClientStream
}
type blobServiceGetBlobClient struct {
grpc.ClientStream
}
func (x *blobServiceGetBlobClient) Recv() (*GetBlobResponse, error) {
m := new(GetBlobResponse)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
// Server API for BlobService service
type BlobServiceServer interface {
// GetBlob returns the contents of a blob object referenced by its object
// ID. We use a stream to return a chunked arbitrarily large binary
// response
GetBlob(*GetBlobRequest, BlobService_GetBlobServer) error
}
func RegisterBlobServiceServer(s *grpc.Server, srv BlobServiceServer) {
s.RegisterService(&_BlobService_serviceDesc, srv)
}
func _BlobService_GetBlob_Handler(srv interface{}, stream grpc.ServerStream) error {
m := new(GetBlobRequest)
if err := stream.RecvMsg(m); err != nil {
return err
}
return srv.(BlobServiceServer).GetBlob(m, &blobServiceGetBlobServer{stream})
}
type BlobService_GetBlobServer interface {
Send(*GetBlobResponse) error
grpc.ServerStream
}
type blobServiceGetBlobServer struct {
grpc.ServerStream
}
func (x *blobServiceGetBlobServer) Send(m *GetBlobResponse) error {
return x.ServerStream.SendMsg(m)
}
var _BlobService_serviceDesc = grpc.ServiceDesc{
ServiceName: "gitaly.BlobService",
HandlerType: (*BlobServiceServer)(nil),
Methods: []grpc.MethodDesc{},
Streams: []grpc.StreamDesc{
{
StreamName: "GetBlob",
Handler: _BlobService_GetBlob_Handler,
ServerStreams: true,
},
},
Metadata: "blob.proto",
}
func init() { proto.RegisterFile("blob.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 217 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0x31, 0x4b, 0xc7, 0x30,
0x10, 0xc5, 0x8d, 0xd1, 0xbf, 0x78, 0x2d, 0x2a, 0x87, 0x68, 0xe9, 0x54, 0x3a, 0x75, 0x2a, 0x52,
0x77, 0x07, 0x17, 0x07, 0x71, 0x89, 0x9f, 0x20, 0xb1, 0x87, 0x06, 0xa2, 0x57, 0x93, 0x28, 0xd4,
0x4f, 0x2f, 0x4d, 0x6c, 0x51, 0xdc, 0x5e, 0x5e, 0x92, 0xf7, 0x7b, 0x77, 0x00, 0xc6, 0xb1, 0xe9,
0x27, 0xcf, 0x91, 0x71, 0xf7, 0x6c, 0xa3, 0x76, 0x73, 0x5d, 0x86, 0x17, 0xed, 0x69, 0xcc, 0x6e,
0xeb, 0xe0, 0xe4, 0x8e, 0xe2, 0xad, 0x63, 0xa3, 0xe8, 0xfd, 0x83, 0x42, 0xc4, 0x01, 0xc0, 0xd3,
0xc4, 0xc1, 0x46, 0xf6, 0x73, 0x25, 0x1a, 0xd1, 0x15, 0x03, 0xf6, 0xf9, 0x73, 0xaf, 0xb6, 0x1b,
0xf5, 0xeb, 0x15, 0x9e, 0x81, 0x64, 0x3b, 0x56, 0xfb, 0x8d, 0xe8, 0x8e, 0xd5, 0x22, 0xf1, 0x1c,
0x0e, 0x9d, 0x7d, 0xb5, 0xb1, 0x92, 0x8d, 0xe8, 0xa4, 0xca, 0x87, 0xf6, 0x1e, 0x4e, 0x37, 0x5a,
0x98, 0xf8, 0x2d, 0x10, 0x22, 0x1c, 0x04, 0xfb, 0x45, 0x09, 0x24, 0x55, 0xd2, 0x8b, 0x37, 0xea,
0xa8, 0x53, 0x5e, 0xa9, 0x92, 0x5e, 0x11, 0x72, 0x43, 0x0c, 0x0f, 0x50, 0x2c, 0x49, 0x8f, 0xe4,
0x3f, 0xed, 0x13, 0xe1, 0x0d, 0x1c, 0xfd, 0x64, 0xe3, 0xc5, 0x5a, 0xf7, 0xef, 0x68, 0xf5, 0xe5,
0x3f, 0x3f, 0x97, 0x68, 0xf7, 0xae, 0x84, 0xd9, 0xa5, 0x85, 0x5c, 0x7f, 0x07, 0x00, 0x00, 0xff,
0xff, 0xab, 0x77, 0x1a, 0x6d, 0x34, 0x01, 0x00, 0x00,
}
...@@ -24,7 +24,7 @@ type PostReceiveRequest struct { ...@@ -24,7 +24,7 @@ type PostReceiveRequest struct {
func (m *PostReceiveRequest) Reset() { *m = PostReceiveRequest{} } func (m *PostReceiveRequest) Reset() { *m = PostReceiveRequest{} }
func (m *PostReceiveRequest) String() string { return proto.CompactTextString(m) } func (m *PostReceiveRequest) String() string { return proto.CompactTextString(m) }
func (*PostReceiveRequest) ProtoMessage() {} func (*PostReceiveRequest) ProtoMessage() {}
func (*PostReceiveRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } func (*PostReceiveRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} }
func (m *PostReceiveRequest) GetRepository() *Repository { func (m *PostReceiveRequest) GetRepository() *Repository {
if m != nil { if m != nil {
...@@ -39,7 +39,7 @@ type PostReceiveResponse struct { ...@@ -39,7 +39,7 @@ type PostReceiveResponse struct {
func (m *PostReceiveResponse) Reset() { *m = PostReceiveResponse{} } func (m *PostReceiveResponse) Reset() { *m = PostReceiveResponse{} }
func (m *PostReceiveResponse) String() string { return proto.CompactTextString(m) } func (m *PostReceiveResponse) String() string { return proto.CompactTextString(m) }
func (*PostReceiveResponse) ProtoMessage() {} func (*PostReceiveResponse) ProtoMessage() {}
func (*PostReceiveResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } func (*PostReceiveResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} }
func init() { func init() {
proto.RegisterType((*PostReceiveRequest)(nil), "gitaly.PostReceiveRequest") proto.RegisterType((*PostReceiveRequest)(nil), "gitaly.PostReceiveRequest")
...@@ -54,74 +54,74 @@ var _ grpc.ClientConn ...@@ -54,74 +54,74 @@ var _ grpc.ClientConn
// is compatible with the grpc package it is being compiled against. // is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4 const _ = grpc.SupportPackageIsVersion4
// Client API for Notifications service // Client API for NotificationService service
type NotificationsClient interface { type NotificationServiceClient interface {
PostReceive(ctx context.Context, in *PostReceiveRequest, opts ...grpc.CallOption) (*PostReceiveResponse, error) PostReceive(ctx context.Context, in *PostReceiveRequest, opts ...grpc.CallOption) (*PostReceiveResponse, error)
} }
type notificationsClient struct { type notificationServiceClient struct {
cc *grpc.ClientConn cc *grpc.ClientConn
} }
func NewNotificationsClient(cc *grpc.ClientConn) NotificationsClient { func NewNotificationServiceClient(cc *grpc.ClientConn) NotificationServiceClient {
return &notificationsClient{cc} return &notificationServiceClient{cc}
} }
func (c *notificationsClient) PostReceive(ctx context.Context, in *PostReceiveRequest, opts ...grpc.CallOption) (*PostReceiveResponse, error) { func (c *notificationServiceClient) PostReceive(ctx context.Context, in *PostReceiveRequest, opts ...grpc.CallOption) (*PostReceiveResponse, error) {
out := new(PostReceiveResponse) out := new(PostReceiveResponse)
err := grpc.Invoke(ctx, "/gitaly.Notifications/PostReceive", in, out, c.cc, opts...) err := grpc.Invoke(ctx, "/gitaly.NotificationService/PostReceive", in, out, c.cc, opts...)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return out, nil return out, nil
} }
// Server API for Notifications service // Server API for NotificationService service
type NotificationsServer interface { type NotificationServiceServer interface {
PostReceive(context.Context, *PostReceiveRequest) (*PostReceiveResponse, error) PostReceive(context.Context, *PostReceiveRequest) (*PostReceiveResponse, error)
} }
func RegisterNotificationsServer(s *grpc.Server, srv NotificationsServer) { func RegisterNotificationServiceServer(s *grpc.Server, srv NotificationServiceServer) {
s.RegisterService(&_Notifications_serviceDesc, srv) s.RegisterService(&_NotificationService_serviceDesc, srv)
} }
func _Notifications_PostReceive_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { func _NotificationService_PostReceive_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(PostReceiveRequest) in := new(PostReceiveRequest)
if err := dec(in); err != nil { if err := dec(in); err != nil {
return nil, err return nil, err
} }
if interceptor == nil { if interceptor == nil {
return srv.(NotificationsServer).PostReceive(ctx, in) return srv.(NotificationServiceServer).PostReceive(ctx, in)
} }
info := &grpc.UnaryServerInfo{ info := &grpc.UnaryServerInfo{
Server: srv, Server: srv,
FullMethod: "/gitaly.Notifications/PostReceive", FullMethod: "/gitaly.NotificationService/PostReceive",
} }
handler := func(ctx context.Context, req interface{}) (interface{}, error) { handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(NotificationsServer).PostReceive(ctx, req.(*PostReceiveRequest)) return srv.(NotificationServiceServer).PostReceive(ctx, req.(*PostReceiveRequest))
} }
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
var _Notifications_serviceDesc = grpc.ServiceDesc{ var _NotificationService_serviceDesc = grpc.ServiceDesc{
ServiceName: "gitaly.Notifications", ServiceName: "gitaly.NotificationService",
HandlerType: (*NotificationsServer)(nil), HandlerType: (*NotificationServiceServer)(nil),
Methods: []grpc.MethodDesc{ Methods: []grpc.MethodDesc{
{ {
MethodName: "PostReceive", MethodName: "PostReceive",
Handler: _Notifications_PostReceive_Handler, Handler: _NotificationService_PostReceive_Handler,
}, },
}, },
Streams: []grpc.StreamDesc{}, Streams: []grpc.StreamDesc{},
Metadata: "notifications.proto", Metadata: "notifications.proto",
} }
func init() { proto.RegisterFile("notifications.proto", fileDescriptor2) } func init() { proto.RegisterFile("notifications.proto", fileDescriptor4) }
var fileDescriptor2 = []byte{ var fileDescriptor4 = []byte{
// 163 bytes of a gzipped FileDescriptorProto // 170 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xce, 0xcb, 0x2f, 0xc9, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xce, 0xcb, 0x2f, 0xc9,
0x4c, 0xcb, 0x4c, 0x4e, 0x2c, 0xc9, 0xcc, 0xcf, 0x2b, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x4c, 0xcb, 0x4c, 0x4e, 0x2c, 0xc9, 0xcc, 0xcf, 0x2b, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17,
0x62, 0x4b, 0xcf, 0x2c, 0x49, 0xcc, 0xa9, 0x94, 0xe2, 0x29, 0xce, 0x48, 0x2c, 0x4a, 0x4d, 0x81, 0x62, 0x4b, 0xcf, 0x2c, 0x49, 0xcc, 0xa9, 0x94, 0xe2, 0x29, 0xce, 0x48, 0x2c, 0x4a, 0x4d, 0x81,
...@@ -129,8 +129,8 @@ var fileDescriptor2 = []byte{ ...@@ -129,8 +129,8 @@ var fileDescriptor2 = []byte{
0x06, 0xa5, 0x16, 0x96, 0xa6, 0x16, 0x97, 0x08, 0x19, 0x71, 0x71, 0x15, 0xa5, 0x16, 0xe4, 0x17, 0x06, 0xa5, 0x16, 0x96, 0xa6, 0x16, 0x97, 0x08, 0x19, 0x71, 0x71, 0x15, 0xa5, 0x16, 0xe4, 0x17,
0x67, 0x96, 0xe4, 0x17, 0x55, 0x4a, 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x1b, 0x09, 0xe9, 0x41, 0x0c, 0x67, 0x96, 0xe4, 0x17, 0x55, 0x4a, 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x1b, 0x09, 0xe9, 0x41, 0x0c,
0xd0, 0x0b, 0x82, 0xcb, 0x04, 0x21, 0xa9, 0x52, 0x12, 0xe5, 0x12, 0x46, 0x31, 0xa9, 0xb8, 0x20, 0xd0, 0x0b, 0x82, 0xcb, 0x04, 0x21, 0xa9, 0x52, 0x12, 0xe5, 0x12, 0x46, 0x31, 0xa9, 0xb8, 0x20,
0x3f, 0xaf, 0x38, 0xd5, 0x28, 0x92, 0x8b, 0xd7, 0x0f, 0xd9, 0x35, 0x42, 0x1e, 0x5c, 0xdc, 0x48, 0x3f, 0xaf, 0x38, 0xd5, 0x28, 0x9e, 0x4b, 0xd8, 0x0f, 0xc9, 0x35, 0xc1, 0xa9, 0x45, 0x65, 0x99,
0xea, 0x84, 0xa4, 0x60, 0xc6, 0x62, 0x3a, 0x43, 0x4a, 0x1a, 0xab, 0x1c, 0xc4, 0x60, 0x25, 0x86, 0xc9, 0xa9, 0x42, 0x1e, 0x5c, 0xdc, 0x48, 0xaa, 0x85, 0xa4, 0x60, 0x86, 0x63, 0x3a, 0x46, 0x4a,
0x24, 0x36, 0xb0, 0x17, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf2, 0x5e, 0x1f, 0x64, 0xef, 0x1a, 0xab, 0x1c, 0xc4, 0x78, 0x25, 0x86, 0x24, 0x36, 0xb0, 0x47, 0x8c, 0x01, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x98, 0xea, 0xcc, 0xff, 0xf5, 0x00, 0x00, 0x00,
} }
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: repository-service.proto
package gitaly
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
type RepositoryExistsRequest struct {
Repository *Repository `protobuf:"bytes,1,opt,name=repository" json:"repository,omitempty"`
}
func (m *RepositoryExistsRequest) Reset() { *m = RepositoryExistsRequest{} }
func (m *RepositoryExistsRequest) String() string { return proto.CompactTextString(m) }
func (*RepositoryExistsRequest) ProtoMessage() {}
func (*RepositoryExistsRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{0} }
func (m *RepositoryExistsRequest) GetRepository() *Repository {
if m != nil {
return m.Repository
}
return nil
}
type RepositoryExistsResponse struct {
Exists bool `protobuf:"varint,1,opt,name=exists" json:"exists,omitempty"`
}
func (m *RepositoryExistsResponse) Reset() { *m = RepositoryExistsResponse{} }
func (m *RepositoryExistsResponse) String() string { return proto.CompactTextString(m) }
func (*RepositoryExistsResponse) ProtoMessage() {}
func (*RepositoryExistsResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{1} }
func (m *RepositoryExistsResponse) GetExists() bool {
if m != nil {
return m.Exists
}
return false
}
func init() {
proto.RegisterType((*RepositoryExistsRequest)(nil), "gitaly.RepositoryExistsRequest")
proto.RegisterType((*RepositoryExistsResponse)(nil), "gitaly.RepositoryExistsResponse")
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// Client API for RepositoryService service
type RepositoryServiceClient interface {
Exists(ctx context.Context, in *RepositoryExistsRequest, opts ...grpc.CallOption) (*RepositoryExistsResponse, error)
}
type repositoryServiceClient struct {
cc *grpc.ClientConn
}
func NewRepositoryServiceClient(cc *grpc.ClientConn) RepositoryServiceClient {
return &repositoryServiceClient{cc}
}
func (c *repositoryServiceClient) Exists(ctx context.Context, in *RepositoryExistsRequest, opts ...grpc.CallOption) (*RepositoryExistsResponse, error) {
out := new(RepositoryExistsResponse)
err := grpc.Invoke(ctx, "/gitaly.RepositoryService/Exists", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for RepositoryService service
type RepositoryServiceServer interface {
Exists(context.Context, *RepositoryExistsRequest) (*RepositoryExistsResponse, error)
}
func RegisterRepositoryServiceServer(s *grpc.Server, srv RepositoryServiceServer) {
s.RegisterService(&_RepositoryService_serviceDesc, srv)
}
func _RepositoryService_Exists_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(RepositoryExistsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RepositoryServiceServer).Exists(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/gitaly.RepositoryService/Exists",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RepositoryServiceServer).Exists(ctx, req.(*RepositoryExistsRequest))
}
return interceptor(ctx, in, info, handler)
}
var _RepositoryService_serviceDesc = grpc.ServiceDesc{
ServiceName: "gitaly.RepositoryService",
HandlerType: (*RepositoryServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "Exists",
Handler: _RepositoryService_Exists_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "repository-service.proto",
}
func init() { proto.RegisterFile("repository-service.proto", fileDescriptor6) }
var fileDescriptor6 = []byte{
// 172 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x28, 0x4a, 0x2d, 0xc8,
0x2f, 0xce, 0x2c, 0xc9, 0x2f, 0xaa, 0xd4, 0x2d, 0x4e, 0x2d, 0x2a, 0xcb, 0x4c, 0x4e, 0xd5, 0x2b,
0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x4b, 0xcf, 0x2c, 0x49, 0xcc, 0xa9, 0x94, 0xe2, 0x29, 0xce,
0x48, 0x2c, 0x4a, 0x4d, 0x81, 0x88, 0x2a, 0xf9, 0x72, 0x89, 0x07, 0xc1, 0x75, 0xb8, 0x56, 0x64,
0x16, 0x97, 0x14, 0x07, 0xa5, 0x16, 0x96, 0xa6, 0x16, 0x97, 0x08, 0x19, 0x71, 0x71, 0x21, 0x0c,
0x93, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x36, 0x12, 0xd2, 0x83, 0x98, 0xa2, 0x87, 0xd0, 0x14, 0x84,
0xa4, 0x4a, 0xc9, 0x88, 0x4b, 0x02, 0xd3, 0xb8, 0xe2, 0x82, 0xfc, 0xbc, 0xe2, 0x54, 0x21, 0x31,
0x2e, 0xb6, 0x54, 0xb0, 0x08, 0xd8, 0x2c, 0x8e, 0x20, 0x28, 0xcf, 0x28, 0x89, 0x4b, 0x10, 0xa1,
0x27, 0x18, 0xe2, 0x66, 0x21, 0x5f, 0x2e, 0x36, 0x88, 0x76, 0x21, 0x79, 0x4c, 0x2b, 0x51, 0xdc,
0x29, 0xa5, 0x80, 0x5b, 0x01, 0xc4, 0x66, 0x25, 0x86, 0x24, 0x36, 0xb0, 0x6f, 0x8d, 0x01, 0x01,
0x00, 0x00, 0xff, 0xff, 0x7e, 0xc1, 0x7d, 0x44, 0x1f, 0x01, 0x00, 0x00,
}
...@@ -6,6 +6,7 @@ package gitaly ...@@ -6,6 +6,7 @@ package gitaly
import proto "github.com/golang/protobuf/proto" import proto "github.com/golang/protobuf/proto"
import fmt "fmt" import fmt "fmt"
import math "math" import math "math"
import google_protobuf "github.com/golang/protobuf/ptypes/timestamp"
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal var _ = proto.Marshal
...@@ -20,7 +21,7 @@ type Repository struct { ...@@ -20,7 +21,7 @@ type Repository struct {
func (m *Repository) Reset() { *m = Repository{} } func (m *Repository) Reset() { *m = Repository{} }
func (m *Repository) String() string { return proto.CompactTextString(m) } func (m *Repository) String() string { return proto.CompactTextString(m) }
func (*Repository) ProtoMessage() {} func (*Repository) ProtoMessage() {}
func (*Repository) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} } func (*Repository) Descriptor() ([]byte, []int) { return fileDescriptor7, []int{0} }
func (m *Repository) GetStorageName() string { func (m *Repository) GetStorageName() string {
if m != nil { if m != nil {
...@@ -36,6 +37,94 @@ func (m *Repository) GetRelativePath() string { ...@@ -36,6 +37,94 @@ func (m *Repository) GetRelativePath() string {
return "" return ""
} }
type GitCommit struct {
Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
Subject []byte `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
Body []byte `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
Author *CommitAuthor `protobuf:"bytes,4,opt,name=author" json:"author,omitempty"`
Committer *CommitAuthor `protobuf:"bytes,5,opt,name=committer" json:"committer,omitempty"`
ParentIds []string `protobuf:"bytes,6,rep,name=parent_ids,json=parentIds" json:"parent_ids,omitempty"`
}
func (m *GitCommit) Reset() { *m = GitCommit{} }
func (m *GitCommit) String() string { return proto.CompactTextString(m) }
func (*GitCommit) ProtoMessage() {}
func (*GitCommit) Descriptor() ([]byte, []int) { return fileDescriptor7, []int{1} }
func (m *GitCommit) GetId() string {
if m != nil {
return m.Id
}
return ""
}
func (m *GitCommit) GetSubject() []byte {
if m != nil {
return m.Subject
}
return nil
}
func (m *GitCommit) GetBody() []byte {
if m != nil {
return m.Body
}
return nil
}
func (m *GitCommit) GetAuthor() *CommitAuthor {
if m != nil {
return m.Author
}
return nil
}
func (m *GitCommit) GetCommitter() *CommitAuthor {
if m != nil {
return m.Committer
}
return nil
}
func (m *GitCommit) GetParentIds() []string {
if m != nil {
return m.ParentIds
}
return nil
}
type CommitAuthor struct {
Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
Email []byte `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"`
Date *google_protobuf.Timestamp `protobuf:"bytes,3,opt,name=date" json:"date,omitempty"`
}
func (m *CommitAuthor) Reset() { *m = CommitAuthor{} }
func (m *CommitAuthor) String() string { return proto.CompactTextString(m) }
func (*CommitAuthor) ProtoMessage() {}
func (*CommitAuthor) Descriptor() ([]byte, []int) { return fileDescriptor7, []int{2} }
func (m *CommitAuthor) GetName() []byte {
if m != nil {
return m.Name
}
return nil
}
func (m *CommitAuthor) GetEmail() []byte {
if m != nil {
return m.Email
}
return nil
}
func (m *CommitAuthor) GetDate() *google_protobuf.Timestamp {
if m != nil {
return m.Date
}
return nil
}
type ExitStatus struct { type ExitStatus struct {
Value int32 `protobuf:"varint,1,opt,name=value" json:"value,omitempty"` Value int32 `protobuf:"varint,1,opt,name=value" json:"value,omitempty"`
} }
...@@ -43,7 +132,7 @@ type ExitStatus struct { ...@@ -43,7 +132,7 @@ type ExitStatus struct {
func (m *ExitStatus) Reset() { *m = ExitStatus{} } func (m *ExitStatus) Reset() { *m = ExitStatus{} }
func (m *ExitStatus) String() string { return proto.CompactTextString(m) } func (m *ExitStatus) String() string { return proto.CompactTextString(m) }
func (*ExitStatus) ProtoMessage() {} func (*ExitStatus) ProtoMessage() {}
func (*ExitStatus) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} } func (*ExitStatus) Descriptor() ([]byte, []int) { return fileDescriptor7, []int{3} }
func (m *ExitStatus) GetValue() int32 { func (m *ExitStatus) GetValue() int32 {
if m != nil { if m != nil {
...@@ -54,22 +143,34 @@ func (m *ExitStatus) GetValue() int32 { ...@@ -54,22 +143,34 @@ func (m *ExitStatus) GetValue() int32 {
func init() { func init() {
proto.RegisterType((*Repository)(nil), "gitaly.Repository") proto.RegisterType((*Repository)(nil), "gitaly.Repository")
proto.RegisterType((*GitCommit)(nil), "gitaly.GitCommit")
proto.RegisterType((*CommitAuthor)(nil), "gitaly.CommitAuthor")
proto.RegisterType((*ExitStatus)(nil), "gitaly.ExitStatus") proto.RegisterType((*ExitStatus)(nil), "gitaly.ExitStatus")
} }
func init() { proto.RegisterFile("shared.proto", fileDescriptor4) } func init() { proto.RegisterFile("shared.proto", fileDescriptor7) }
var fileDescriptor4 = []byte{ var fileDescriptor7 = []byte{
// 164 bytes of a gzipped FileDescriptorProto // 335 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x34, 0xce, 0x31, 0x0f, 0x82, 0x30, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x51, 0xc1, 0x4a, 0xc3, 0x40,
0x10, 0x05, 0xe0, 0x14, 0x81, 0xe8, 0x89, 0x89, 0x69, 0x1c, 0x18, 0x11, 0x17, 0x26, 0x17, 0x7f, 0x10, 0x25, 0x69, 0x1a, 0xcd, 0x34, 0x8a, 0x2c, 0x3d, 0x84, 0x82, 0x58, 0xe3, 0xa5, 0x07, 0x49,
0x83, 0x8b, 0x83, 0x31, 0xf5, 0x07, 0xe0, 0x19, 0x2f, 0xd0, 0xa4, 0xd8, 0xa6, 0x3d, 0x88, 0xfc, 0xa1, 0x7e, 0x81, 0x88, 0x88, 0x1e, 0x44, 0x56, 0xef, 0x75, 0xd2, 0xac, 0xc9, 0x4a, 0xd2, 0x0d,
0x7b, 0x23, 0xea, 0xf8, 0xbe, 0xf7, 0x86, 0x07, 0x59, 0x68, 0xd1, 0xd3, 0x63, 0xef, 0xbc, 0x65, 0xbb, 0x93, 0x62, 0x7f, 0xd1, 0xaf, 0x92, 0xec, 0x36, 0xe8, 0xc9, 0xdb, 0xce, 0x9b, 0xf7, 0x66,
0x2b, 0xd3, 0x46, 0x33, 0x9a, 0xb1, 0xbc, 0x01, 0x28, 0x72, 0x36, 0x68, 0xb6, 0x7e, 0x94, 0x5b, 0xe6, 0xed, 0x83, 0xd8, 0x54, 0xa8, 0x45, 0x91, 0xb5, 0x5a, 0x91, 0x62, 0x61, 0x29, 0x09, 0xeb,
0xc8, 0x02, 0x5b, 0x8f, 0x0d, 0xd5, 0x4f, 0xec, 0x28, 0x8f, 0x0a, 0x51, 0x2d, 0xd4, 0xf2, 0x67, 0xfd, 0xec, 0xa2, 0x54, 0xaa, 0xac, 0xc5, 0xd2, 0xa2, 0x79, 0xf7, 0xb1, 0x24, 0xd9, 0x08, 0x43,
0x67, 0xec, 0x48, 0xee, 0x60, 0xe5, 0xc9, 0x20, 0xeb, 0x81, 0x6a, 0x87, 0xdc, 0xe6, 0xb3, 0x69, 0xd8, 0xb4, 0x8e, 0x98, 0xbe, 0x03, 0x70, 0xd1, 0x2a, 0x23, 0x49, 0xe9, 0x3d, 0xbb, 0x84, 0xd8,
0x93, 0xfd, 0xf1, 0x82, 0xdc, 0x9e, 0xe2, 0xb9, 0x58, 0x47, 0x2a, 0xfe, 0xf4, 0x65, 0x09, 0x70, 0x90, 0xd2, 0x58, 0x8a, 0xf5, 0x16, 0x1b, 0x91, 0xf8, 0x73, 0x6f, 0x11, 0xf1, 0xc9, 0x01, 0x7b,
0x7c, 0x69, 0xbe, 0x32, 0x72, 0x1f, 0xe4, 0x06, 0x92, 0x01, 0x4d, 0x4f, 0xb9, 0x28, 0x44, 0x95, 0xc6, 0x46, 0xb0, 0x2b, 0x38, 0xd1, 0xa2, 0x46, 0x92, 0x3b, 0xb1, 0x6e, 0x91, 0xaa, 0x64, 0x64,
0xa8, 0x6f, 0xb8, 0xa7, 0xd3, 0xa9, 0xc3, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x53, 0x2c, 0xb6, 0x39, 0xf1, 0x00, 0xbe, 0x20, 0x55, 0x4f, 0xc1, 0xb1, 0x77, 0xe6, 0xf3, 0xa0, 0xef, 0xa7, 0xdf,
0xa4, 0x00, 0x00, 0x00, 0x1e, 0x44, 0x0f, 0x92, 0xee, 0x54, 0xd3, 0x48, 0x62, 0xa7, 0xe0, 0xcb, 0x22, 0xf1, 0xac, 0xc6,
0x97, 0x05, 0x4b, 0xe0, 0xc8, 0x74, 0xf9, 0xa7, 0xd8, 0x90, 0x5d, 0x16, 0xf3, 0xa1, 0x64, 0x0c,
0x82, 0x5c, 0x15, 0x7b, 0x3b, 0x3f, 0xe6, 0xf6, 0xcd, 0xae, 0x21, 0xc4, 0x8e, 0x2a, 0xa5, 0x93,
0x60, 0xee, 0x2d, 0x26, 0xab, 0x69, 0xe6, 0x7c, 0x66, 0x6e, 0xfa, 0xad, 0xed, 0xf1, 0x03, 0x87,
0xad, 0x20, 0xda, 0x58, 0x9c, 0x84, 0x4e, 0xc6, 0xff, 0x08, 0x7e, 0x69, 0xec, 0x1c, 0xa0, 0x45,
0x2d, 0xb6, 0xb4, 0x96, 0x85, 0x49, 0xc2, 0xf9, 0x68, 0x11, 0xf1, 0xc8, 0x21, 0x8f, 0x85, 0x49,
0x2b, 0x88, 0xff, 0x2a, 0xfb, 0x23, 0xed, 0x47, 0x79, 0xee, 0xc8, 0xfe, 0xcd, 0xa6, 0x30, 0x16,
0x0d, 0xca, 0xfa, 0x60, 0xc8, 0x15, 0x2c, 0x83, 0xa0, 0x40, 0x12, 0xd6, 0xce, 0x64, 0x35, 0xcb,
0x5c, 0x30, 0xd9, 0x10, 0x4c, 0xf6, 0x36, 0x04, 0xc3, 0x2d, 0x2f, 0x4d, 0x01, 0xee, 0xbf, 0x24,
0xbd, 0x12, 0x52, 0x67, 0xfa, 0x99, 0x3b, 0xac, 0x3b, 0xb7, 0x68, 0xcc, 0x5d, 0x91, 0x87, 0x56,
0x7d, 0xf3, 0x13, 0x00, 0x00, 0xff, 0xff, 0x0a, 0x87, 0xe3, 0xb7, 0xfc, 0x01, 0x00, 0x00,
} }
...@@ -146,12 +146,12 @@ ...@@ -146,12 +146,12 @@
"revisionTime": "2016-11-17T07:43:51Z" "revisionTime": "2016-11-17T07:43:51Z"
}, },
{ {
"checksumSHA1": "6SVQZeJ2M//eFTZwDe1ArP7RF8g=", "checksumSHA1": "kvKqkz5AAO34W1mB4t9bAZdPGEw=",
"path": "gitlab.com/gitlab-org/gitaly-proto/go", "path": "gitlab.com/gitlab-org/gitaly-proto/go",
"revision": "e302a46f7ccd889bfaa683d2ba06ffe06ca5875b", "revision": "e61d1eab6f19e153379184d378c72917b6d03dc3",
"revisionTime": "2017-06-12T18:49:50Z", "revisionTime": "2017-07-07T23:49:54Z",
"version": "v0.9.0", "version": "v0.15.0",
"versionExact": "v0.9.0" "versionExact": "v0.15.0"
}, },
{ {
"checksumSHA1": "dUHJbKas746n5fLzlwxHb6FOCxs=", "checksumSHA1": "dUHJbKas746n5fLzlwxHb6FOCxs=",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment