diff options
author | zeripath <art27@cantab.net> | 2021-06-16 23:02:24 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-16 18:02:24 -0400 |
commit | 6d69df28047bf7fd3e307391b484a93432615b90 (patch) | |
tree | 8a24ce0727f86625c4f469b6744f6f3f2fa27c86 /modules/migrations | |
parent | 047c39e91bb39d4f31278d8c4082187894ea8263 (diff) | |
download | gitea-6d69df28047bf7fd3e307391b484a93432615b90.tar.gz gitea-6d69df28047bf7fd3e307391b484a93432615b90.zip |
Add Status Updates whilst Gitea migrations are occurring (#15076)
* Add migrating message
Signed-off-by: Andrew Thornton <art27@cantab.net>
* simplify messenger
Signed-off-by: Andrew Thornton <art27@cantab.net>
* make messenger an interface
Signed-off-by: Andrew Thornton <art27@cantab.net>
* rename
Signed-off-by: Andrew Thornton <art27@cantab.net>
* prepare for merge
Signed-off-by: Andrew Thornton <art27@cantab.net>
* as per tech
Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: 6543 <6543@obermui.de>
Diffstat (limited to 'modules/migrations')
-rw-r--r-- | modules/migrations/base/messenger.go | 11 | ||||
-rw-r--r-- | modules/migrations/dump.go | 4 | ||||
-rw-r--r-- | modules/migrations/gitea_uploader_test.go | 2 | ||||
-rw-r--r-- | modules/migrations/migrate.go | 17 |
4 files changed, 28 insertions, 6 deletions
diff --git a/modules/migrations/base/messenger.go b/modules/migrations/base/messenger.go new file mode 100644 index 0000000000..a92f59ef7f --- /dev/null +++ b/modules/migrations/base/messenger.go @@ -0,0 +1,11 @@ +// Copyright 2021 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package base + +// Messenger is a formatting function similar to i18n.Tr +type Messenger func(key string, args ...interface{}) + +// NilMessenger represents an empty formatting function +func NilMessenger(string, ...interface{}) {} diff --git a/modules/migrations/dump.go b/modules/migrations/dump.go index 4a18c47ae5..6c4cf174d4 100644 --- a/modules/migrations/dump.go +++ b/modules/migrations/dump.go @@ -555,7 +555,7 @@ func DumpRepository(ctx context.Context, baseDir, ownerName string, opts base.Mi return err } - if err := migrateRepository(downloader, uploader, opts); err != nil { + if err := migrateRepository(downloader, uploader, opts, nil); err != nil { if err1 := uploader.Rollback(); err1 != nil { log.Error("rollback failed: %v", err1) } @@ -620,7 +620,7 @@ func RestoreRepository(ctx context.Context, baseDir string, ownerName, repoName } updateOptionsUnits(&migrateOpts, units) - if err = migrateRepository(downloader, uploader, migrateOpts); err != nil { + if err = migrateRepository(downloader, uploader, migrateOpts, nil); err != nil { if err1 := uploader.Rollback(); err1 != nil { log.Error("rollback failed: %v", err1) } diff --git a/modules/migrations/gitea_uploader_test.go b/modules/migrations/gitea_uploader_test.go index cf975020a3..5f36d54584 100644 --- a/modules/migrations/gitea_uploader_test.go +++ b/modules/migrations/gitea_uploader_test.go @@ -47,7 +47,7 @@ func TestGiteaUploadRepo(t *testing.T) { PullRequests: true, Private: true, Mirror: false, - }) + }, nil) assert.NoError(t, err) repo := models.AssertExistsAndLoadBean(t, &models.Repository{OwnerID: user.ID, Name: repoName}).(*models.Repository) diff --git a/modules/migrations/migrate.go b/modules/migrations/migrate.go index 7eff3a3576..3cdf68ab62 100644 --- a/modules/migrations/migrate.go +++ b/modules/migrations/migrate.go @@ -99,7 +99,7 @@ func IsMigrateURLAllowed(remoteURL string, doer *models.User) error { } // MigrateRepository migrate repository according MigrateOptions -func MigrateRepository(ctx context.Context, doer *models.User, ownerName string, opts base.MigrateOptions) (*models.Repository, error) { +func MigrateRepository(ctx context.Context, doer *models.User, ownerName string, opts base.MigrateOptions, messenger base.Messenger) (*models.Repository, error) { err := IsMigrateURLAllowed(opts.CloneAddr, doer) if err != nil { return nil, err @@ -118,7 +118,7 @@ func MigrateRepository(ctx context.Context, doer *models.User, ownerName string, var uploader = NewGiteaLocalUploader(ctx, doer, ownerName, opts.RepoName) uploader.gitServiceType = opts.GitServiceType - if err := migrateRepository(downloader, uploader, opts); err != nil { + if err := migrateRepository(downloader, uploader, opts, messenger); err != nil { if err1 := uploader.Rollback(); err1 != nil { log.Error("rollback failed: %v", err1) } @@ -167,7 +167,11 @@ func newDownloader(ctx context.Context, ownerName string, opts base.MigrateOptio // migrateRepository will download information and then upload it to Uploader, this is a simple // process for small repository. For a big repository, save all the data to disk // before upload is better -func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts base.MigrateOptions) error { +func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts base.MigrateOptions, messenger base.Messenger) error { + if messenger == nil { + messenger = base.NilMessenger + } + repo, err := downloader.GetRepoInfo() if err != nil { if !base.IsErrNotSupported(err) { @@ -185,12 +189,14 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts } log.Trace("migrating git data from %s", repo.CloneURL) + messenger("repo.migrate.migrating_git") if err = uploader.CreateRepo(repo, opts); err != nil { return err } defer uploader.Close() log.Trace("migrating topics") + messenger("repo.migrate.migrating_topics") topics, err := downloader.GetTopics() if err != nil { if !base.IsErrNotSupported(err) { @@ -206,6 +212,7 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts if opts.Milestones { log.Trace("migrating milestones") + messenger("repo.migrate.migrating_milestones") milestones, err := downloader.GetMilestones() if err != nil { if !base.IsErrNotSupported(err) { @@ -229,6 +236,7 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts if opts.Labels { log.Trace("migrating labels") + messenger("repo.migrate.migrating_labels") labels, err := downloader.GetLabels() if err != nil { if !base.IsErrNotSupported(err) { @@ -252,6 +260,7 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts if opts.Releases { log.Trace("migrating releases") + messenger("repo.migrate.migrating_releases") releases, err := downloader.GetReleases() if err != nil { if !base.IsErrNotSupported(err) { @@ -285,6 +294,7 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts if opts.Issues { log.Trace("migrating issues and comments") + messenger("repo.migrate.migrating_issues") var issueBatchSize = uploader.MaxBatchInsertSize("issue") for i := 1; ; i++ { @@ -339,6 +349,7 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts if opts.PullRequests { log.Trace("migrating pull requests and comments") + messenger("repo.migrate.migrating_pulls") var prBatchSize = uploader.MaxBatchInsertSize("pullrequest") for i := 1; ; i++ { prs, isEnd, err := downloader.GetPullRequests(i, prBatchSize) |