diff options
Diffstat (limited to 'internal/gitaly/service/repository/create_repository_from_url.go')
-rw-r--r-- | internal/gitaly/service/repository/create_repository_from_url.go | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/internal/gitaly/service/repository/create_repository_from_url.go b/internal/gitaly/service/repository/create_repository_from_url.go index f7fd9b853..57acb49e5 100644 --- a/internal/gitaly/service/repository/create_repository_from_url.go +++ b/internal/gitaly/service/repository/create_repository_from_url.go @@ -18,7 +18,7 @@ import ( func (s *server) cloneFromURLCommand( ctx context.Context, - repoURL, repoHost, repositoryFullPath, authorizationToken string, mirror bool, + repoURL, repoHost, resolvedAddress, repositoryFullPath, authorizationToken string, mirror bool, opts ...git.CmdOpt, ) (*command.Command, error) { cloneFlags := []git.Option{ @@ -55,6 +55,18 @@ func (s *server) cloneFromURLCommand( config = append(config, git.ConfigPair{Key: "http.extraHeader", Value: authHeader}) } + urlString := u.String() + + if resolvedAddress != "" { + modifiedURL, resolveConfig, err := git.GetURLAndResolveConfig(u.String(), resolvedAddress) + if err != nil { + return nil, helper.ErrInvalidArgumentf("couldn't get curloptResolve config: %w", err) + } + + urlString = modifiedURL + config = append(config, resolveConfig...) + } + if repoHost != "" { config = append(config, git.ConfigPair{ Key: "http.extraHeader", @@ -66,7 +78,7 @@ func (s *server) cloneFromURLCommand( git.SubCmd{ Name: "clone", Flags: cloneFlags, - Args: []string{u.String(), repositoryFullPath}, + Args: []string{urlString, repositoryFullPath}, }, append(opts, git.WithConfigEnv(config...))..., ) @@ -91,7 +103,9 @@ func (s *server) CreateRepositoryFromURL(ctx context.Context, req *gitalypb.Crea var stderr bytes.Buffer cmd, err := s.cloneFromURLCommand(ctx, req.GetUrl(), + //nolint:staticcheck req.GetHttpHost(), + req.GetResolvedAddress(), targetPath, req.GetHttpAuthorizationHeader(), req.GetMirror(), |