From 9f87b60b46b2d3c6c4518d772a0fdc935d454ae0 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Wed, 15 Jun 2022 20:28:03 +0800 Subject: Fix cli command restore-repo: "units" should be parsed as StringSlice (#19953) * Fix cli command restore-repo: "units" should be parsed as StringSlice because after #15790 it's read by c.StringSlice("units"). Before, the "units" were processed by strings.Split * Add checking for invalid unit names Co-authored-by: 6543 <6543@obermui.de> --- services/migrations/dump.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'services/migrations/dump.go') diff --git a/services/migrations/dump.go b/services/migrations/dump.go index 6410aa1ee0..ad04756d4b 100644 --- a/services/migrations/dump.go +++ b/services/migrations/dump.go @@ -6,6 +6,7 @@ package migrations import ( "context" + "errors" "fmt" "io" "net/http" @@ -572,7 +573,7 @@ func DumpRepository(ctx context.Context, baseDir, ownerName string, opts base.Mi return nil } -func updateOptionsUnits(opts *base.MigrateOptions, units []string) { +func updateOptionsUnits(opts *base.MigrateOptions, units []string) error { if len(units) == 0 { opts.Wiki = true opts.Issues = true @@ -585,6 +586,8 @@ func updateOptionsUnits(opts *base.MigrateOptions, units []string) { } else { for _, unit := range units { switch strings.ToLower(unit) { + case "": + continue case "wiki": opts.Wiki = true case "issues": @@ -601,9 +604,12 @@ func updateOptionsUnits(opts *base.MigrateOptions, units []string) { opts.Comments = true case "pull_requests": opts.PullRequests = true + default: + return errors.New("invalid unit: " + unit) } } } + return nil } // RestoreRepository restore a repository from the disk directory @@ -626,7 +632,9 @@ func RestoreRepository(ctx context.Context, baseDir, ownerName, repoName string, migrateOpts := base.MigrateOptions{ GitServiceType: structs.GitServiceType(tp), } - updateOptionsUnits(&migrateOpts, units) + if err := updateOptionsUnits(&migrateOpts, units); err != nil { + return err + } if err = migrateRepository(downloader, uploader, migrateOpts, nil); err != nil { if err1 := uploader.Rollback(); err1 != nil { -- cgit v1.2.3