Skip to content

Commit

Permalink
Fix cli command restore-repo: "units" should be parsed as StringSlice (
Browse files Browse the repository at this point in the history
…go-gitea#19953)

* Fix cli command restore-repo: "units" should be parsed as StringSlice because after  go-gitea#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>
  • Loading branch information
wxiaoguang and 6543 committed Jun 15, 2022
1 parent 97548d2 commit 9f87b60
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 5 deletions.
6 changes: 3 additions & 3 deletions cmd/restore_repo.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ var CmdRestoreRepository = cli.Command{
Value: "",
Usage: "Restore destination repository name",
},
cli.StringFlag{
cli.StringSliceFlag{
Name: "units",
Value: "",
Usage: `Which items will be restored, one or more units should be separated as comma.
Value: nil,
Usage: `Which items will be restored, one or more units should be repeated with this flag.
wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments are allowed. Empty means all units.`,
},
cli.BoolFlag{
Expand Down
12 changes: 10 additions & 2 deletions services/migrations/dump.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package migrations

import (
"context"
"errors"
"fmt"
"io"
"net/http"
Expand Down Expand Up @@ -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
Expand All @@ -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":
Expand All @@ -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
Expand All @@ -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 {
Expand Down

0 comments on commit 9f87b60

Please sign in to comment.