mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	add admin op: delete missing repos
This commit is contained in:
		@@ -1325,6 +1325,42 @@ func DeleteRepositoryArchives() error {
 | 
			
		||||
		})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DeleteMissingRepositories deletes all repository records that lost Git files.
 | 
			
		||||
func DeleteMissingRepositories() error {
 | 
			
		||||
	repos := make([]*Repository, 0, 5)
 | 
			
		||||
	if err := x.Where("id > 0").Iterate(new(Repository),
 | 
			
		||||
		func(idx int, bean interface{}) error {
 | 
			
		||||
			repo := bean.(*Repository)
 | 
			
		||||
			repoPath, err := repo.RepoPath()
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return fmt.Errorf("RepoPath [%d]: %v", repo.ID, err)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if !com.IsDir(repoPath) {
 | 
			
		||||
				repos = append(repos, repo)
 | 
			
		||||
			}
 | 
			
		||||
			return nil
 | 
			
		||||
		}); err != nil {
 | 
			
		||||
		if err2 := CreateRepositoryNotice(fmt.Sprintf("DeleteMissingRepositories: %v", err)); err2 != nil {
 | 
			
		||||
			log.Error(4, "CreateRepositoryNotice: %v", err2)
 | 
			
		||||
		}
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if len(repos) == 0 {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, repo := range repos {
 | 
			
		||||
		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 nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RewriteRepositoryUpdateHook rewrites all repositories' update hook.
 | 
			
		||||
func RewriteRepositoryUpdateHook() error {
 | 
			
		||||
	return x.Where("id > 0").Iterate(new(Repository),
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user