diff options
author | James Fargher <proglottis@gmail.com> | 2022-02-02 00:52:56 +0300 |
---|---|---|
committer | James Fargher <proglottis@gmail.com> | 2022-02-02 00:52:56 +0300 |
commit | 467c86b390c5f2fd530b4f916fbdda1488e02124 (patch) | |
tree | 5a8352b64770c25c72e4fc333ea4fca373d0b006 | |
parent | dc9e90c5f183ed1a40d91590105af36e529cb3ba (diff) | |
parent | 6ec9bd1f944d54737255211b502b131ecf8a8573 (diff) |
Merge branch 'better_upload_pack_errors' into 'master'
Add stderr to errors returned by SSHUploadPack
See merge request gitlab-org/gitaly!4290
-rw-r--r-- | internal/gitaly/service/ssh/upload_pack.go | 6 | ||||
-rw-r--r-- | internal/gitaly/service/ssh/upload_pack_test.go | 1 |
2 files changed, 6 insertions, 1 deletions
diff --git a/internal/gitaly/service/ssh/upload_pack.go b/internal/gitaly/service/ssh/upload_pack.go index b217b9218..5d23c53b0 100644 --- a/internal/gitaly/service/ssh/upload_pack.go +++ b/internal/gitaly/service/ssh/upload_pack.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "io" + "strings" "sync" "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus" @@ -123,6 +124,9 @@ func (s *server) sshUploadPack(ctx context.Context, req sshUploadPackRequest, st git.WithPackObjectsHookEnv(repo), } + var stderrBuilder strings.Builder + stderr = io.MultiWriter(stderr, &stderrBuilder) + cmd, monitor, err := monitorStdinCommand(ctx, s.gitCmdFactory, stdin, stdout, stderr, git.SubCmd{ Name: "upload-pack", Args: []string{repoPath}, @@ -146,7 +150,7 @@ func (s *server) sshUploadPack(ctx context.Context, req sshUploadPackRequest, st wg.Wait() status, _ := command.ExitStatus(err) - return status, fmt.Errorf("cmd wait: %w", err) + return status, fmt.Errorf("cmd wait: %w, stderr: %q", err, stderrBuilder.String()) } pw.Close() diff --git a/internal/gitaly/service/ssh/upload_pack_test.go b/internal/gitaly/service/ssh/upload_pack_test.go index 9f89e84fe..813b8ce37 100644 --- a/internal/gitaly/service/ssh/upload_pack_test.go +++ b/internal/gitaly/service/ssh/upload_pack_test.go @@ -610,6 +610,7 @@ func TestUploadPackCloneGitFailure(t *testing.T) { err = testPostUploadPackFailedResponse(t, stream) testhelper.RequireGrpcCode(t, err, codes.Internal) + require.EqualError(t, err, "rpc error: code = Internal desc = cmd wait: exit status 128, stderr: \"fatal: bad config line 1 in file ./config\\n\"") } func testPostUploadPackFailedResponse(t *testing.T, stream gitalypb.SSHService_SSHUploadPackClient) error { |