@@ -14,10 +14,14 @@ import (
1414 "code.gitea.io/gitea/models/db"
1515 "code.gitea.io/gitea/models/migrations"
1616 migrate_base "code.gitea.io/gitea/models/migrations/base"
17+ repo_model "code.gitea.io/gitea/models/repo"
18+ unit_model "code.gitea.io/gitea/models/unit"
1719 "code.gitea.io/gitea/modules/container"
1820 "code.gitea.io/gitea/modules/log"
21+ "code.gitea.io/gitea/modules/optional"
1922 "code.gitea.io/gitea/modules/setting"
2023 "code.gitea.io/gitea/services/doctor"
24+ repo_service "code.gitea.io/gitea/services/repository"
2125
2226 "github.com/urfave/cli/v2"
2327 "xorm.io/xorm"
@@ -33,6 +37,7 @@ var CmdDoctor = &cli.Command{
3337 cmdDoctorCheck ,
3438 cmdRecreateTable ,
3539 cmdDoctorConvert ,
40+ cmdDisableMirrorActionsUnit ,
3641 },
3742}
3843
@@ -138,6 +143,48 @@ func runRecreateTable(ctx *cli.Context) error {
138143 })
139144}
140145
146+ var cmdDisableMirrorActionsUnit = & cli.Command {
147+ Name : "disable-mirror-actions-unit" ,
148+ Usage : "Disable the actions unit for all mirrors" ,
149+ Action : runDisableMirrorActionsUnit ,
150+ }
151+
152+ func runDisableMirrorActionsUnit (_ * cli.Context ) error {
153+ stdCtx , cancel := installSignals ()
154+ defer cancel ()
155+
156+ if err := initDB (stdCtx ); err != nil {
157+ return err
158+ }
159+
160+ const pageSize = repo_model .RepositoryListDefaultPageSize
161+ for page := 1 ; ; page ++ {
162+ repos , count , err := repo_model .SearchRepository (stdCtx , & repo_model.SearchRepoOptions {
163+ ListOptions : db.ListOptions {
164+ PageSize : pageSize ,
165+ Page : page ,
166+ },
167+ Mirror : optional .Some (true ),
168+ })
169+ if err != nil {
170+ return fmt .Errorf ("SearchRepository: %w" , err )
171+ }
172+ if len (repos ) == 0 {
173+ break
174+ }
175+ log .Info ("Processing %d-%d of %d repos" , (page - 1 )* pageSize + 1 , (page - 1 )* pageSize + len (repos ), count )
176+ for _ , repo := range repos {
177+ if err := repo_service .UpdateRepositoryUnits (stdCtx , repo , nil , []unit_model.Type {unit_model .TypeActions }); err != nil {
178+ return err
179+ }
180+ }
181+ }
182+
183+ log .Info ("Finish processing" )
184+
185+ return nil
186+ }
187+
141188func setupDoctorDefaultLogger (ctx * cli.Context , colorize bool ) {
142189 // Silence the default loggers
143190 setupConsoleLogger (log .FATAL , log .CanColorStderr , os .Stderr )
0 commit comments