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
diff options
context:
space:
mode:
Diffstat (limited to 'internal/gitaly/service/operations/merge.go')
-rw-r--r--internal/gitaly/service/operations/merge.go41
1 files changed, 14 insertions, 27 deletions
diff --git a/internal/gitaly/service/operations/merge.go b/internal/gitaly/service/operations/merge.go
index 4ff11fea6..2a19c9171 100644
--- a/internal/gitaly/service/operations/merge.go
+++ b/internal/gitaly/service/operations/merge.go
@@ -6,13 +6,11 @@ import (
"errors"
"fmt"
"io"
- "os/exec"
- "path"
"strings"
- "gitlab.com/gitlab-org/gitaly/internal/command"
"gitlab.com/gitlab-org/gitaly/internal/git"
"gitlab.com/gitlab-org/gitaly/internal/git/updateref"
+ "gitlab.com/gitlab-org/gitaly/internal/git2go"
"gitlab.com/gitlab-org/gitaly/internal/gitaly/config"
"gitlab.com/gitlab-org/gitaly/internal/gitaly/rubyserver"
"gitlab.com/gitlab-org/gitaly/internal/gitlabshell"
@@ -201,34 +199,23 @@ func (s *server) userMergeBranch(stream gitalypb.OperationService_UserMergeBranc
return err
}
- binary := path.Join(s.cfg.BinDir, "gitaly-git2go")
- args := []string{
- "merge",
- "-repository", repoPath,
- "-author-name", string(firstRequest.User.Name),
- "-author-mail", string(firstRequest.User.Email),
- "-message", string(firstRequest.Message),
- "-ours", firstRequest.CommitId,
- "-theirs", revision,
- }
-
- var stderr, stdout bytes.Buffer
- mergeCommand, err := command.New(ctx, exec.Command(binary, args...), nil, &stdout, &stderr)
+ merge, err := git2go.MergeCommand{
+ Repository: repoPath,
+ AuthorName: string(firstRequest.User.Name),
+ AuthorMail: string(firstRequest.User.Email),
+ Message: string(firstRequest.Message),
+ Ours: firstRequest.CommitId,
+ Theirs: revision,
+ }.Run(ctx, s.cfg)
if err != nil {
- return err
- }
-
- if err := mergeCommand.Wait(); err != nil {
- if _, ok := err.(*exec.ExitError); ok {
- return fmt.Errorf("%w: %s", err, stderr.String())
+ if errors.Is(err, git2go.ErrInvalidArgument) {
+ return helper.ErrInvalidArgument(err)
}
return err
}
- mergeCommit := text.ChompBytes(stdout.Bytes())
-
if err := stream.Send(&gitalypb.UserMergeBranchResponse{
- CommitId: mergeCommit,
+ CommitId: merge.CommitID,
}); err != nil {
return err
}
@@ -242,7 +229,7 @@ func (s *server) userMergeBranch(stream gitalypb.OperationService_UserMergeBranc
}
branch := "refs/heads/" + text.ChompBytes(firstRequest.Branch)
- if err := s.updateReferenceWithHooks(ctx, firstRequest.Repository, firstRequest.User, branch, mergeCommit, revision); err != nil {
+ if err := s.updateReferenceWithHooks(ctx, firstRequest.Repository, firstRequest.User, branch, merge.CommitID, revision); err != nil {
var preReceiveError preReceiveError
var updateRefError updateRefError
@@ -262,7 +249,7 @@ func (s *server) userMergeBranch(stream gitalypb.OperationService_UserMergeBranc
if err := stream.Send(&gitalypb.UserMergeBranchResponse{
BranchUpdate: &gitalypb.OperationBranchUpdate{
- CommitId: mergeCommit,
+ CommitId: merge.CommitID,
RepoCreated: false,
BranchCreated: false,
},