Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorPatrick Steinhardt <psteinhardt@gitlab.com>2023-09-06 13:26:16 +0300
committerPatrick Steinhardt <psteinhardt@gitlab.com>2023-09-07 09:34:57 +0300
commit796b888a64dd5027301d3e3836e53caa7d185368 (patch)
tree5469af9f8e95249013198cdb9d5c1699fb958242 /client
parent77014bc3b7d9e9dbcc69fd102b3b5c84e0a1086b (diff)
client: Split out Gitaly-specific client logic
Split out Gitaly-specific client logic for SSHReceivePack, SSHUploadPack and SSHUploadArchive. This is the last remaining part to ensure that none of our own internal packages use the public `client` package.
Diffstat (limited to 'client')
-rw-r--r--client/receive_pack.go31
-rw-r--r--client/upload_archive.go31
-rw-r--r--client/upload_pack.go62
3 files changed, 8 insertions, 116 deletions
diff --git a/client/receive_pack.go b/client/receive_pack.go
index c59f87d06..2d8d68e44 100644
--- a/client/receive_pack.go
+++ b/client/receive_pack.go
@@ -4,39 +4,12 @@ import (
"context"
"io"
- "gitlab.com/gitlab-org/gitaly/v16/internal/stream"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/gitalyclient"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
- "gitlab.com/gitlab-org/gitaly/v16/streamio"
"google.golang.org/grpc"
)
// ReceivePack proxies an SSH git-receive-pack (git push) session to Gitaly
func ReceivePack(ctx context.Context, conn *grpc.ClientConn, stdin io.Reader, stdout, stderr io.Writer, req *gitalypb.SSHReceivePackRequest) (int32, error) {
- ctx2, cancel := context.WithCancel(ctx)
- defer cancel()
-
- ssh := gitalypb.NewSSHServiceClient(conn)
- receivePackStream, err := ssh.SSHReceivePack(ctx2)
- if err != nil {
- return 0, err
- }
-
- if err = receivePackStream.Send(req); err != nil {
- return 0, err
- }
-
- inWriter := streamio.NewWriter(func(p []byte) error {
- return receivePackStream.Send(&gitalypb.SSHReceivePackRequest{Stdin: p})
- })
-
- return stream.Handler(func() (stream.StdoutStderrResponse, error) {
- return receivePackStream.Recv()
- }, func(errC chan error) {
- _, errRecv := io.Copy(inWriter, stdin)
- if err := receivePackStream.CloseSend(); err != nil && errRecv == nil {
- errC <- err
- } else {
- errC <- errRecv
- }
- }, stdout, stderr)
+ return gitalyclient.ReceivePack(ctx, conn, stdin, stdout, stderr, req)
}
diff --git a/client/upload_archive.go b/client/upload_archive.go
index 654e7c583..572e6bc9b 100644
--- a/client/upload_archive.go
+++ b/client/upload_archive.go
@@ -4,39 +4,12 @@ import (
"context"
"io"
- "gitlab.com/gitlab-org/gitaly/v16/internal/stream"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/gitalyclient"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
- "gitlab.com/gitlab-org/gitaly/v16/streamio"
"google.golang.org/grpc"
)
// UploadArchive proxies an SSH git-upload-archive (git archive --remote) session to Gitaly
func UploadArchive(ctx context.Context, conn *grpc.ClientConn, stdin io.Reader, stdout, stderr io.Writer, req *gitalypb.SSHUploadArchiveRequest) (int32, error) {
- ctx2, cancel := context.WithCancel(ctx)
- defer cancel()
-
- ssh := gitalypb.NewSSHServiceClient(conn)
- uploadPackStream, err := ssh.SSHUploadArchive(ctx2)
- if err != nil {
- return 0, err
- }
-
- if err = uploadPackStream.Send(req); err != nil {
- return 0, err
- }
-
- inWriter := streamio.NewWriter(func(p []byte) error {
- return uploadPackStream.Send(&gitalypb.SSHUploadArchiveRequest{Stdin: p})
- })
-
- return stream.Handler(func() (stream.StdoutStderrResponse, error) {
- return uploadPackStream.Recv()
- }, func(errC chan error) {
- _, errRecv := io.Copy(inWriter, stdin)
- if err := uploadPackStream.CloseSend(); err != nil && errRecv == nil {
- errC <- err
- } else {
- errC <- errRecv
- }
- }, stdout, stderr)
+ return gitalyclient.UploadArchive(ctx, conn, stdin, stdout, stderr, req)
}
diff --git a/client/upload_pack.go b/client/upload_pack.go
index 65d81746e..4ad17dcb4 100644
--- a/client/upload_pack.go
+++ b/client/upload_pack.go
@@ -4,48 +4,18 @@ import (
"context"
"io"
- "gitlab.com/gitlab-org/gitaly/v16/internal/stream"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/gitalyclient"
"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
- "gitlab.com/gitlab-org/gitaly/v16/streamio"
"google.golang.org/grpc"
)
// UploadPack proxies an SSH git-upload-pack (git fetch) session to Gitaly
func UploadPack(ctx context.Context, conn *grpc.ClientConn, stdin io.Reader, stdout, stderr io.Writer, req *gitalypb.SSHUploadPackRequest) (int32, error) {
- ctx2, cancel := context.WithCancel(ctx)
- defer cancel()
-
- ssh := gitalypb.NewSSHServiceClient(conn)
- uploadPackStream, err := ssh.SSHUploadPack(ctx2)
- if err != nil {
- return 0, err
- }
-
- if err = uploadPackStream.Send(req); err != nil {
- return 0, err
- }
-
- inWriter := streamio.NewWriter(func(p []byte) error {
- return uploadPackStream.Send(&gitalypb.SSHUploadPackRequest{Stdin: p})
- })
-
- return stream.Handler(func() (stream.StdoutStderrResponse, error) {
- return uploadPackStream.Recv()
- }, func(errC chan error) {
- _, errRecv := io.Copy(inWriter, stdin)
- if err := uploadPackStream.CloseSend(); err != nil && errRecv == nil {
- errC <- err
- } else {
- errC <- errRecv
- }
- }, stdout, stderr)
+ return gitalyclient.UploadPack(ctx, conn, stdin, stdout, stderr, req)
}
// UploadPackResult wraps ExitCode and PackfileNegotiationStatistics.
-type UploadPackResult struct {
- ExitCode int32
- PackfileNegotiationStatistics *gitalypb.PackfileNegotiationStatistics
-}
+type UploadPackResult = gitalyclient.UploadPackResult
// UploadPackWithSidechannelWithResult proxies an SSH git-upload-pack (git fetch)
// session to Gitaly using a sidechannel for the raw data transfer.
@@ -57,31 +27,7 @@ func UploadPackWithSidechannelWithResult(
stdout, stderr io.Writer,
req *gitalypb.SSHUploadPackWithSidechannelRequest,
) (UploadPackResult, error) {
- result := UploadPackResult{}
- ctx, cancel := context.WithCancel(ctx)
- defer cancel()
-
- ctx, wt := reg.Register(ctx, func(c SidechannelConn) error {
- return stream.ProxyPktLine(c, stdin, stdout, stderr)
- })
- defer func() {
- // We aleady check the error further down.
- _ = wt.Close()
- }()
-
- sshClient := gitalypb.NewSSHServiceClient(conn)
- resp, err := sshClient.SSHUploadPackWithSidechannel(ctx, req)
- if err != nil {
- return result, err
- }
- result.ExitCode = 0
- result.PackfileNegotiationStatistics = resp.PackfileNegotiationStatistics
-
- if err := wt.Close(); err != nil {
- return result, err
- }
-
- return result, nil
+ return gitalyclient.UploadPackWithSidechannel(ctx, conn, reg.registry, stdin, stdout, stderr, req)
}
// UploadPackWithSidechannel proxies an SSH git-upload-pack (git fetch)