diff options
author | Sami Hiltunen <shiltunen@gitlab.com> | 2021-03-11 14:42:21 +0300 |
---|---|---|
committer | Sami Hiltunen <shiltunen@gitlab.com> | 2021-03-11 18:37:06 +0300 |
commit | 53ea4846e77086bf6766a1dca6c8949b39048f3b (patch) | |
tree | 1c5436685ef2bbd0a5300ba72b7eba814923e031 | |
parent | 44f9bfba28da3e883ceceae0fa49a698467ba7eb (diff) |
replace existing isAncestor implementations with local repo's one
Operations service contains a method for checking ancestry of a
commit. This commit replaces the implementation with the one that
was now added to localrepo.
-rw-r--r-- | internal/gitaly/service/operations/cherry_pick.go | 2 | ||||
-rw-r--r-- | internal/gitaly/service/operations/merge.go | 31 | ||||
-rw-r--r-- | internal/gitaly/service/operations/revert.go | 2 |
3 files changed, 5 insertions, 30 deletions
diff --git a/internal/gitaly/service/operations/cherry_pick.go b/internal/gitaly/service/operations/cherry_pick.go index a38448c84..22205ba87 100644 --- a/internal/gitaly/service/operations/cherry_pick.go +++ b/internal/gitaly/service/operations/cherry_pick.go @@ -99,7 +99,7 @@ func (s *Server) userCherryPick(ctx context.Context, req *gitalypb.UserCherryPic } if !branchCreated { - ancestor, err := s.isAncestor(ctx, req.Repository, oldrev, newrev) + ancestor, err := localRepo.IsAncestor(ctx, oldrev.Revision(), newrev.Revision()) if err != nil { return nil, err } diff --git a/internal/gitaly/service/operations/merge.go b/internal/gitaly/service/operations/merge.go index 98f10a709..603b4706f 100644 --- a/internal/gitaly/service/operations/merge.go +++ b/internal/gitaly/service/operations/merge.go @@ -8,10 +8,8 @@ import ( "time" "github.com/golang/protobuf/ptypes" - "gitlab.com/gitlab-org/gitaly/internal/command" "gitlab.com/gitlab-org/gitaly/internal/git" "gitlab.com/gitlab-org/gitaly/internal/git/localrepo" - "gitlab.com/gitlab-org/gitaly/internal/git/repository" "gitlab.com/gitlab-org/gitaly/internal/git2go" "gitlab.com/gitlab-org/gitaly/internal/helper" "gitlab.com/gitlab-org/gitaly/proto/go/gitalypb" @@ -159,7 +157,8 @@ func (s *Server) UserFFBranch(ctx context.Context, in *gitalypb.UserFFBranchRequ referenceName := git.NewReferenceNameFromBranchName(string(in.Branch)) - revision, err := localrepo.New(s.gitCmdFactory, in.Repository, s.cfg).ResolveRevision(ctx, referenceName.Revision()) + repo := localrepo.New(s.gitCmdFactory, in.Repository, s.cfg) + revision, err := repo.ResolveRevision(ctx, referenceName.Revision()) if err != nil { return nil, helper.ErrInvalidArgument(err) } @@ -169,7 +168,7 @@ func (s *Server) UserFFBranch(ctx context.Context, in *gitalypb.UserFFBranchRequ return nil, helper.ErrInvalidArgumentf("cannot parse commit ID: %w", err) } - ancestor, err := s.isAncestor(ctx, in.Repository, revision, commitID) + ancestor, err := repo.IsAncestor(ctx, revision.Revision(), commitID.Revision()) if err != nil { return nil, err } @@ -306,27 +305,3 @@ func (s *Server) UserMergeToRef(ctx context.Context, request *gitalypb.UserMerge CommitId: mergeOID.String(), }, nil } - -func (s *Server) isAncestor(ctx context.Context, repo repository.GitRepo, ancestor, descendant git.ObjectID) (bool, error) { - cmd, err := s.gitCmdFactory.New(ctx, repo, git.SubCmd{ - Name: "merge-base", - Flags: []git.Option{git.Flag{Name: "--is-ancestor"}}, - Args: []string{ancestor.String(), descendant.String()}, - }) - if err != nil { - return false, helper.ErrInternalf("isAncestor: %w", err) - } - if err := cmd.Wait(); err != nil { - status, ok := command.ExitStatus(err) - if !ok { - return false, helper.ErrInternalf("isAncestor: %w", err) - } - // --is-ancestor errors are signaled by a non-zero status that is not 1. - // https://git-scm.com/docs/git-merge-base#Documentation/git-merge-base.txt---is-ancestor - if status != 1 { - return false, helper.ErrInvalidArgumentf("isAncestor: %w", err) - } - return false, nil - } - return true, nil -} diff --git a/internal/gitaly/service/operations/revert.go b/internal/gitaly/service/operations/revert.go index 8192e5363..fce7ebdfc 100644 --- a/internal/gitaly/service/operations/revert.go +++ b/internal/gitaly/service/operations/revert.go @@ -93,7 +93,7 @@ func (s *Server) UserRevert(ctx context.Context, req *gitalypb.UserRevertRequest } if !branchCreated { - ancestor, err := s.isAncestor(ctx, req.Repository, oldrev, newrev) + ancestor, err := localRepo.IsAncestor(ctx, oldrev.Revision(), newrev.Revision()) if err != nil { return nil, err } |