diff options
author | Unknwon <u@gogs.io> | 2016-02-04 12:51:00 -0500 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2016-02-04 12:51:00 -0500 |
commit | 04be8c0de5295f57e06e152e56c481b29b1076e5 (patch) | |
tree | b4b960ce14c151ae199d4c7f99d9718f10e8503b /models/repo.go | |
parent | a47baa1b7ae08fbcc6946b6c168e69cd4c9894b4 (diff) |
#2554 reinitialize all repos from the db
- Update locales
Diffstat (limited to 'models/repo.go')
-rw-r--r-- | models/repo.go | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/models/repo.go b/models/repo.go index 8ce1f719..868498bc 100644 --- a/models/repo.go +++ b/models/repo.go @@ -1457,9 +1457,8 @@ func DeleteRepositoryArchives() error { }) } -// DeleteMissingRepositories deletes all repository records that lost Git files. -func DeleteMissingRepositories() error { - repos := make([]*Repository, 0, 5) +func gatherMissingRepoRecords() ([]*Repository, error) { + repos := make([]*Repository, 0, 10) if err := x.Where("id > 0").Iterate(new(Repository), func(idx int, bean interface{}) error { repo := bean.(*Repository) @@ -1468,10 +1467,18 @@ func DeleteMissingRepositories() error { } return nil }); err != nil { - if err2 := CreateRepositoryNotice(fmt.Sprintf("DeleteMissingRepositories: %v", err)); err2 != nil { - log.Error(4, "CreateRepositoryNotice: %v", err2) + if err2 := CreateRepositoryNotice(fmt.Sprintf("gatherMissingRepoRecords: %v", err)); err2 != nil { + return nil, fmt.Errorf("CreateRepositoryNotice: %v", err) } - return nil + } + return repos, nil +} + +// DeleteMissingRepositories deletes all repository records that lost Git files. +func DeleteMissingRepositories() error { + repos, err := gatherMissingRepoRecords() + if err != nil { + return fmt.Errorf("gatherMissingRepoRecords: %v", err) } if len(repos) == 0 { @@ -1482,7 +1489,29 @@ func DeleteMissingRepositories() error { log.Trace("Deleting %d/%d...", repo.OwnerID, repo.ID) if err := DeleteRepository(repo.OwnerID, repo.ID); err != nil { if err2 := CreateRepositoryNotice(fmt.Sprintf("DeleteRepository [%d]: %v", repo.ID, err)); err2 != nil { - log.Error(4, "CreateRepositoryNotice: %v", err2) + return fmt.Errorf("CreateRepositoryNotice: %v", err) + } + } + } + return nil +} + +// ReinitMissingRepositories reinitializes all repository records that lost Git files. +func ReinitMissingRepositories() error { + repos, err := gatherMissingRepoRecords() + if err != nil { + return fmt.Errorf("gatherMissingRepoRecords: %v", err) + } + + if len(repos) == 0 { + return nil + } + + for _, repo := range repos { + log.Trace("Initializing %d/%d...", repo.OwnerID, repo.ID) + if err := git.InitRepository(repo.RepoPath(), true); err != nil { + if err2 := CreateRepositoryNotice(fmt.Sprintf("InitRepository [%d]: %v", repo.ID, err)); err2 != nil { + return fmt.Errorf("CreateRepositoryNotice: %v", err) } } } |