|
|
@ -11,6 +11,7 @@ import ( |
|
|
|
"io/ioutil" |
|
|
|
"os" |
|
|
|
"path" |
|
|
|
"path/filepath" |
|
|
|
"strings" |
|
|
|
"time" |
|
|
|
|
|
|
@ -66,6 +67,7 @@ var migrations = []Migration{ |
|
|
|
NewMigration("generate issue-label from issue", issueToIssueLabel), // V6 -> V7:v0.6.4
|
|
|
|
NewMigration("refactor attachment table", attachmentRefactor), // V7 -> V8:v0.6.4
|
|
|
|
NewMigration("rename pull request fields", renamePullRequestFields), // V8 -> V9:v0.6.16
|
|
|
|
NewMigration("clean up migrate repo info", cleanUpMigrateRepoInfo), // V9 -> V10:v0.6.20
|
|
|
|
} |
|
|
|
|
|
|
|
// Migrate database to current version
|
|
|
@ -653,3 +655,44 @@ func renamePullRequestFields(x *xorm.Engine) (err error) { |
|
|
|
|
|
|
|
return sess.Commit() |
|
|
|
} |
|
|
|
|
|
|
|
func cleanUpMigrateRepoInfo(x *xorm.Engine) (err error) { |
|
|
|
type ( |
|
|
|
User struct { |
|
|
|
ID int64 `xorm:"pk autoincr"` |
|
|
|
LowerName string |
|
|
|
} |
|
|
|
Repository struct { |
|
|
|
ID int64 `xorm:"pk autoincr"` |
|
|
|
OwnerID int64 |
|
|
|
LowerName string |
|
|
|
} |
|
|
|
) |
|
|
|
|
|
|
|
repos := make([]*Repository, 0, 25) |
|
|
|
if err = x.Where("is_mirror=?", false).Find(&repos); err != nil { |
|
|
|
return fmt.Errorf("select all non-mirror repositories: %v", err) |
|
|
|
} |
|
|
|
var user *User |
|
|
|
for _, repo := range repos { |
|
|
|
user = &User{ID: repo.OwnerID} |
|
|
|
has, err := x.Get(user) |
|
|
|
if err != nil { |
|
|
|
return fmt.Errorf("get owner of repository[%d - %d]: %v", repo.ID, repo.OwnerID, err) |
|
|
|
} else if !has { |
|
|
|
continue |
|
|
|
} |
|
|
|
|
|
|
|
configPath := filepath.Join(setting.RepoRootPath, user.LowerName, repo.LowerName+".git/config") |
|
|
|
cfg, err := ini.Load(configPath) |
|
|
|
if err != nil { |
|
|
|
return fmt.Errorf("open config file: %v", err) |
|
|
|
} |
|
|
|
cfg.DeleteSection("remote \"origin\"") |
|
|
|
if err = cfg.SaveToIndent(configPath, "\t"); err != nil { |
|
|
|
return fmt.Errorf("save config file: %v", err) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return nil |
|
|
|
} |