]> source.dussan.org Git - gitea.git/commitdiff
finaly fix gitlab migration with subdir (#13629)
author6543 <6543@obermui.de>
Thu, 19 Nov 2020 05:17:56 +0000 (06:17 +0100)
committerGitHub <noreply@github.com>
Thu, 19 Nov 2020 05:17:56 +0000 (00:17 -0500)
* finaly fix #13535

* add logging

modules/migrations/gitlab.go

index 06f4a4ba7fe9ecd70c5fc7befa75f422926b9a7b..c510944f6f4b9eba2d2e272124f693ca33c99711 100644 (file)
@@ -90,12 +90,17 @@ func NewGitlabDownloader(ctx context.Context, baseURL, repoPath, username, passw
 
        // split namespace and subdirectory
        pathParts := strings.Split(strings.Trim(repoPath, "/"), "/")
+       var resp *gitlab.Response
+       u, _ := url.Parse(baseURL)
        for len(pathParts) > 2 {
-               if _, _, err = gitlabClient.Version.GetVersion(); err == nil {
+               _, resp, err = gitlabClient.Version.GetVersion()
+               if err == nil || resp != nil && resp.StatusCode == 401 {
+                       err = nil // if no authentication given, this still should work
                        break
                }
 
-               baseURL = path.Join(baseURL, pathParts[0])
+               u.Path = path.Join(u.Path, pathParts[0])
+               baseURL = u.String()
                pathParts = pathParts[1:]
                _ = gitlab.WithBaseURL(baseURL)(gitlabClient)
                repoPath = strings.Join(pathParts, "/")
@@ -105,6 +110,8 @@ func NewGitlabDownloader(ctx context.Context, baseURL, repoPath, username, passw
                return nil, err
        }
 
+       log.Trace("gitlab downloader: use BaseURL: '%s' and RepoPath: '%s'", baseURL, repoPath)
+
        // Grab and store project/repo ID here, due to issues using the URL escaped path
        gr, _, err := gitlabClient.Projects.GetProject(repoPath, nil, nil, gitlab.WithContext(ctx))
        if err != nil {