diff options
author | Unknwon <u@gogs.io> | 2015-10-31 23:18:58 -0400 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2015-10-31 23:18:58 -0400 |
commit | cb100c7781699dec7987d349590411917d3dff44 (patch) | |
tree | 484a48b12717130360a82f2f10575c22a3f5e5fc /models/migrations | |
parent | 5cad12470456fce715b9d94681d82bd46864d44c (diff) | |
download | gitea-cb100c7781699dec7987d349590411917d3dff44.tar.gz gitea-cb100c7781699dec7987d349590411917d3dff44.zip |
work #1705
Diffstat (limited to 'models/migrations')
-rw-r--r-- | models/migrations/migrations.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index c3f7a59be9..df1e4a2d2e 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -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 +} |