mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Fix repo-restore bug with poster not replaced (#14759)
* 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>
This commit is contained in:
		@@ -12,6 +12,7 @@ import (
 | 
				
			|||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
	"path/filepath"
 | 
						"path/filepath"
 | 
				
			||||||
 | 
						"strconv"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/models"
 | 
						"code.gitea.io/gitea/models"
 | 
				
			||||||
@@ -19,6 +20,7 @@ import (
 | 
				
			|||||||
	"code.gitea.io/gitea/modules/log"
 | 
						"code.gitea.io/gitea/modules/log"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/migrations/base"
 | 
						"code.gitea.io/gitea/modules/migrations/base"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/repository"
 | 
						"code.gitea.io/gitea/modules/repository"
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/structs"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"gopkg.in/yaml.v2"
 | 
						"gopkg.in/yaml.v2"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -572,20 +574,27 @@ func RestoreRepository(ctx context.Context, baseDir string, ownerName, repoName
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						opts, err := downloader.getRepoOptions()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						tp, _ := strconv.Atoi(opts["service_type"])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err = migrateRepository(downloader, uploader, base.MigrateOptions{
 | 
						if err = migrateRepository(downloader, uploader, base.MigrateOptions{
 | 
				
			||||||
		Wiki:          true,
 | 
							Wiki:           true,
 | 
				
			||||||
		Issues:        true,
 | 
							Issues:         true,
 | 
				
			||||||
		Milestones:    true,
 | 
							Milestones:     true,
 | 
				
			||||||
		Labels:        true,
 | 
							Labels:         true,
 | 
				
			||||||
		Releases:      true,
 | 
							Releases:       true,
 | 
				
			||||||
		Comments:      true,
 | 
							Comments:       true,
 | 
				
			||||||
		PullRequests:  true,
 | 
							PullRequests:   true,
 | 
				
			||||||
		ReleaseAssets: true,
 | 
							ReleaseAssets:  true,
 | 
				
			||||||
 | 
							GitServiceType: structs.GitServiceType(tp),
 | 
				
			||||||
	}); err != nil {
 | 
						}); err != nil {
 | 
				
			||||||
		if err1 := uploader.Rollback(); err1 != nil {
 | 
							if err1 := uploader.Rollback(); err1 != nil {
 | 
				
			||||||
			log.Error("rollback failed: %v", err1)
 | 
								log.Error("rollback failed: %v", err1)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return updateMigrationPosterIDByGitService(ctx, structs.GitServiceType(tp))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -53,8 +53,7 @@ func (r *RepositoryRestorer) SetContext(ctx context.Context) {
 | 
				
			|||||||
	r.ctx = ctx
 | 
						r.ctx = ctx
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GetRepoInfo returns a repository information
 | 
					func (r *RepositoryRestorer) getRepoOptions() (map[string]string, error) {
 | 
				
			||||||
func (r *RepositoryRestorer) GetRepoInfo() (*base.Repository, error) {
 | 
					 | 
				
			||||||
	p := filepath.Join(r.baseDir, "repo.yml")
 | 
						p := filepath.Join(r.baseDir, "repo.yml")
 | 
				
			||||||
	bs, err := ioutil.ReadFile(p)
 | 
						bs, err := ioutil.ReadFile(p)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -66,6 +65,15 @@ func (r *RepositoryRestorer) GetRepoInfo() (*base.Repository, error) {
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							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"])
 | 
						isPrivate, _ := strconv.ParseBool(opts["is_private"])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user