From 7979c3654eb91adce4fd9717d9ff891496a56ff3 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 4 Jun 2021 21:14:20 +0800 Subject: [PATCH] Copy git data from disk when restore repository (#16066) --- modules/migrations/gitea_uploader.go | 9 ++++++--- modules/migrations/migrate.go | 2 +- modules/migrations/restore.go | 6 ++++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/modules/migrations/gitea_uploader.go b/modules/migrations/gitea_uploader.go index 217acb00e2156..2b18098b7f161 100644 --- a/modules/migrations/gitea_uploader.go +++ b/modules/migrations/gitea_uploader.go @@ -276,19 +276,22 @@ func (g *GiteaLocalUploader) CreateReleases(releases ...*base.Release) error { // asset.DownloadURL maybe a local file var rc io.ReadCloser var err error - if asset.DownloadURL == nil { + if asset.DownloadFunc != nil { rc, err = asset.DownloadFunc() if err != nil { return err } - } else { + } else if asset.DownloadURL != nil { rc, err = uri.Open(*asset.DownloadURL) if err != nil { return err } } - defer rc.Close() + if rc == nil { + return nil + } _, err = storage.Attachments.Save(attach.RelativePath(), rc, int64(*asset.Size)) + rc.Close() return err }() if err != nil { diff --git a/modules/migrations/migrate.go b/modules/migrations/migrate.go index 2f8889e67b531..7eff3a3576db7 100644 --- a/modules/migrations/migrate.go +++ b/modules/migrations/migrate.go @@ -184,7 +184,7 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts return err } - log.Trace("migrating git data") + log.Trace("migrating git data from %s", repo.CloneURL) if err = uploader.CreateRepo(repo, opts); err != nil { return err } diff --git a/modules/migrations/restore.go b/modules/migrations/restore.go index 4e63df14292ad..5b44811d52927 100644 --- a/modules/migrations/restore.go +++ b/modules/migrations/restore.go @@ -83,7 +83,7 @@ func (r *RepositoryRestorer) GetRepoInfo() (*base.Repository, error) { IsPrivate: isPrivate, Description: opts["description"], OriginalURL: opts["original_url"], - CloneURL: opts["clone_addr"], + CloneURL: filepath.Join(r.baseDir, "git"), DefaultBranch: opts["default_branch"], }, nil } @@ -155,7 +155,9 @@ func (r *RepositoryRestorer) GetReleases() ([]*base.Release, error) { } for _, rel := range releases { for _, asset := range rel.Assets { - *asset.DownloadURL = "file://" + filepath.Join(r.baseDir, *asset.DownloadURL) + if asset.DownloadURL != nil { + *asset.DownloadURL = "file://" + filepath.Join(r.baseDir, *asset.DownloadURL) + } } } return releases, nil