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:
authorPatrick Steinhardt <psteinhardt@gitlab.com>2021-09-21 12:21:37 +0300
committerPatrick Steinhardt <psteinhardt@gitlab.com>2021-10-06 12:53:41 +0300
commit9ed7528eb5e1bb2c2a00f938264956eb37e471ae (patch)
treedcbef85a93470370bbbe3de08fad7b664343c035
parent033647da4d91bbc830e7ddd8c4ad04ea004cfb64 (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.go53
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")