in internal/gitaly/gitaly.go [74:122]
func NewGitalyClient(ctx context.Context, config *StorageConfig, projectID uint32, limitFileSize int64) (*GitalyClient, error) {
var RPCCred credentials.PerRPCCredentials
if config.TokenVersion == 0 || config.TokenVersion == 2 {
RPCCred = gitalyauth.RPCCredentialsV2(config.Token)
} else {
return nil, errors.New("unknown token version")
}
connOpts := append(
gitalyclient.DefaultDialOpts,
grpc.WithPerRPCCredentials(RPCCred),
grpc.WithStreamInterceptor(
grpccorrelation.StreamClientCorrelationInterceptor(
grpccorrelation.WithClientName(ClientName),
),
),
grpc.WithUnaryInterceptor(
grpccorrelation.UnaryClientCorrelationInterceptor(
grpccorrelation.WithClientName(ClientName),
),
),
)
conn, err := gitalyclient.Dial(config.Address, connOpts)
if err != nil {
return nil, fmt.Errorf("did not connect: %w", err)
}
repository := &pb.Repository{
StorageName: config.StorageName,
RelativePath: config.RelativePath,
GlProjectPath: config.ProjectPath,
GlRepository: fmt.Sprint(projectID),
}
client := &GitalyClient{
conn: conn,
repository: repository,
blobServiceClient: pb.NewBlobServiceClient(conn),
diffServiceClient: pb.NewDiffServiceClient(conn),
repositoryServiceClient: pb.NewRepositoryServiceClient(conn),
refServiceClient: pb.NewRefServiceClient(conn),
commitServiceClient: pb.NewCommitServiceClient(conn),
limitFileSize: limitFileSize,
ctx: ctx,
}
return client, nil
}