diff options
author | Patrick Steinhardt <psteinhardt@gitlab.com> | 2021-09-21 12:21:37 +0300 |
---|---|---|
committer | Patrick Steinhardt <psteinhardt@gitlab.com> | 2021-10-06 12:53:41 +0300 |
commit | 9ed7528eb5e1bb2c2a00f938264956eb37e471ae (patch) | |
tree | dcbef85a93470370bbbe3de08fad7b664343c035 | |
parent | 033647da4d91bbc830e7ddd8c4ad04ea004cfb64 (diff) |
remote: Refactor `FetchInternalRemote()` to use remoterepo interface
Refactor `FetchInternalRemote()` to use the new function to get the
default branch provided by the remoterepo package.
-rw-r--r-- | internal/gitaly/service/remote/fetch_internal_remote.go | 53 |
1 files changed, 16 insertions, 37 deletions
diff --git a/internal/gitaly/service/remote/fetch_internal_remote.go b/internal/gitaly/service/remote/fetch_internal_remote.go index eb277c572..06cd4b2dc 100644 --- a/internal/gitaly/service/remote/fetch_internal_remote.go +++ b/internal/gitaly/service/remote/fetch_internal_remote.go @@ -9,9 +9,10 @@ import ( "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus" "gitlab.com/gitlab-org/gitaly/v14/client" "gitlab.com/gitlab-org/gitaly/v14/internal/git/localrepo" + "gitlab.com/gitlab-org/gitaly/v14/internal/git/remoterepo" "gitlab.com/gitlab-org/gitaly/v14/internal/gitaly/config" "gitlab.com/gitlab-org/gitaly/v14/internal/gitaly/service/ref" - "gitlab.com/gitlab-org/gitaly/v14/internal/gitaly/storage" + "gitlab.com/gitlab-org/gitaly/v14/internal/helper" "gitlab.com/gitlab-org/gitaly/v14/proto/go/gitalypb" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -40,12 +41,12 @@ func FetchInternalRemote( cfg config.Cfg, conns *client.Pool, repo *localrepo.Repo, - remoteRepo *gitalypb.Repository, + remoteRepoProto *gitalypb.Repository, ) error { var stderr bytes.Buffer if err := repo.FetchInternal( ctx, - remoteRepo, + remoteRepoProto, []string{mirrorRefSpec}, localrepo.FetchOpts{Prune: true, Stderr: &stderr}, ); err != nil { @@ -53,22 +54,27 @@ func FetchInternalRemote( return fetchFailedError{stderr.String(), err} } - return fmt.Errorf("create git fetch: %w", err) + return fmt.Errorf("fetch: %w", err) } - remoteDefaultBranch, err := getRemoteDefaultBranch(ctx, remoteRepo, conns) + remoteRepo, err := remoterepo.New(ctx, remoteRepoProto, conns) if err != nil { - return status.Errorf(codes.Internal, "FetchInternalRemote: remote default branch: %v", err) + return helper.ErrInternal(err) + } + + remoteDefaultBranch, err := remoteRepo.GetDefaultBranch(ctx) + if err != nil { + return helper.ErrInternalf("getting remote default branch: %w", err) } defaultBranch, err := repo.GetDefaultBranch(ctx) if err != nil { - return status.Errorf(codes.Internal, "FetchInternalRemote: default branch: %v", err) + return helper.ErrInternalf("getting local default branch: %w", err) } - if defaultBranch.String() != string(remoteDefaultBranch) { - if err := ref.SetDefaultBranchRef(ctx, repo, string(remoteDefaultBranch), cfg); err != nil { - return status.Errorf(codes.Internal, "FetchInternalRemote: set default branch: %v", err) + if defaultBranch != remoteDefaultBranch { + if err := ref.SetDefaultBranchRef(ctx, repo, remoteDefaultBranch.String(), cfg); err != nil { + return helper.ErrInternalf("setting default branch: %w", err) } } @@ -98,33 +104,6 @@ func (s *server) FetchInternalRemote(ctx context.Context, req *gitalypb.FetchInt return &gitalypb.FetchInternalRemoteResponse{Result: true}, nil } -// getRemoteDefaultBranch gets the default branch of a repository hosted on another Gitaly node. -func getRemoteDefaultBranch(ctx context.Context, repo *gitalypb.Repository, conns *client.Pool) ([]byte, error) { - serverInfo, err := storage.ExtractGitalyServer(ctx, repo.StorageName) - if err != nil { - return nil, fmt.Errorf("getRemoteDefaultBranch: %w", err) - } - - if serverInfo.Address == "" { - return nil, errors.New("getRemoteDefaultBranch: empty Gitaly address") - } - - conn, err := conns.Dial(ctx, serverInfo.Address, serverInfo.Token) - if err != nil { - return nil, fmt.Errorf("getRemoteDefaultBranch: %w", err) - } - - cc := gitalypb.NewRefServiceClient(conn) - response, err := cc.FindDefaultBranchName(ctx, &gitalypb.FindDefaultBranchNameRequest{ - Repository: repo, - }) - if err != nil { - return nil, fmt.Errorf("getRemoteDefaultBranch: %w", err) - } - - return response.Name, nil -} - func validateFetchInternalRemoteRequest(req *gitalypb.FetchInternalRemoteRequest) error { if req.GetRepository() == nil { return fmt.Errorf("empty Repository") |