]> source.dussan.org Git - gitea.git/commitdiff
Fix repo-restore bug with poster not replaced (#14759)
authorLunny Xiao <xiaolunwen@gmail.com>
Mon, 22 Feb 2021 03:57:41 +0000 (11:57 +0800)
committerGitHub <noreply@github.com>
Mon, 22 Feb 2021 03:57:41 +0000 (11:57 +0800)
* Fix restore bug

* Fix restore bug

Co-authored-by: Lauris BH <lauris@nix.lv>
Co-authored-by: John Olheiser <john.olheiser@gmail.com>
Co-authored-by: 6543 <6543@obermui.de>
modules/migrations/dump.go
modules/migrations/restore.go

index 3c3b9a1753903330c8b8ca4fe0688714ce3985ee..297095883be4b1d1bc17e50bcef6d2537763f6af 100644 (file)
@@ -12,6 +12,7 @@ import (
        "net/url"
        "os"
        "path/filepath"
+       "strconv"
        "time"
 
        "code.gitea.io/gitea/models"
@@ -19,6 +20,7 @@ import (
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/migrations/base"
        "code.gitea.io/gitea/modules/repository"
+       "code.gitea.io/gitea/modules/structs"
 
        "gopkg.in/yaml.v2"
 )
@@ -572,20 +574,27 @@ func RestoreRepository(ctx context.Context, baseDir string, ownerName, repoName
        if err != nil {
                return err
        }
+       opts, err := downloader.getRepoOptions()
+       if err != nil {
+               return err
+       }
+       tp, _ := strconv.Atoi(opts["service_type"])
+
        if err = migrateRepository(downloader, uploader, base.MigrateOptions{
-               Wiki:          true,
-               Issues:        true,
-               Milestones:    true,
-               Labels:        true,
-               Releases:      true,
-               Comments:      true,
-               PullRequests:  true,
-               ReleaseAssets: true,
+               Wiki:           true,
+               Issues:         true,
+               Milestones:     true,
+               Labels:         true,
+               Releases:       true,
+               Comments:       true,
+               PullRequests:   true,
+               ReleaseAssets:  true,
+               GitServiceType: structs.GitServiceType(tp),
        }); err != nil {
                if err1 := uploader.Rollback(); err1 != nil {
                        log.Error("rollback failed: %v", err1)
                }
                return err
        }
-       return nil
+       return updateMigrationPosterIDByGitService(ctx, structs.GitServiceType(tp))
 }
index e1ab408e41c43e86c3a419359c3cc0ceb9d2a10d..4e63df14292ad706e0259e1abcb0a7b53ad145b6 100644 (file)
@@ -53,8 +53,7 @@ func (r *RepositoryRestorer) SetContext(ctx context.Context) {
        r.ctx = ctx
 }
 
-// GetRepoInfo returns a repository information
-func (r *RepositoryRestorer) GetRepoInfo() (*base.Repository, error) {
+func (r *RepositoryRestorer) getRepoOptions() (map[string]string, error) {
        p := filepath.Join(r.baseDir, "repo.yml")
        bs, err := ioutil.ReadFile(p)
        if err != nil {
@@ -66,6 +65,15 @@ func (r *RepositoryRestorer) GetRepoInfo() (*base.Repository, error) {
        if err != nil {
                return nil, err
        }
+       return opts, nil
+}
+
+// GetRepoInfo returns a repository information
+func (r *RepositoryRestorer) GetRepoInfo() (*base.Repository, error) {
+       opts, err := r.getRepoOptions()
+       if err != nil {
+               return nil, err
+       }
 
        isPrivate, _ := strconv.ParseBool(opts["is_private"])