@@ -56,7 +56,7 @@ func AddRepository(ctx context.Context, t *organization.Team, repo *repo_model.R
5656// addAllRepositories adds all repositories to the team.
5757// If the team already has some repositories they will be left unchanged.
5858func addAllRepositories (ctx context.Context , t * organization.Team ) error {
59- orgRepos , err := organization .GetOrgRepositories (ctx , t .OrgID )
59+ orgRepos , err := repo_model .GetOrgRepositories (ctx , t .OrgID )
6060 if err != nil {
6161 return fmt .Errorf ("get org repos: %w" , err )
6262 }
@@ -93,25 +93,24 @@ func RemoveAllRepositories(ctx context.Context, t *organization.Team) (err error
9393 return nil
9494 }
9595
96- ctx , committer , err := db .TxContext (ctx )
96+ repos , err := repo_model .GetTeamRepositories (ctx , & repo_model.SearchTeamRepoOptions {
97+ TeamID : t .ID ,
98+ })
9799 if err != nil {
98- return err
99- }
100- defer committer .Close ()
101-
102- if err = removeAllRepositories (ctx , t ); err != nil {
103- return err
100+ return fmt .Errorf ("GetTeamRepositories: %w" , err )
104101 }
105102
106- return committer .Commit ()
103+ return db .WithTx (ctx , func (ctx context.Context ) error {
104+ return removeAllRepositories (ctx , t , repos )
105+ })
107106}
108107
109108// removeAllRepositories removes all repositories from team and recalculates access
110109// Note: Shall not be called if team includes all repositories
111- func removeAllRepositories (ctx context.Context , t * organization.Team ) (err error ) {
110+ func removeAllRepositories (ctx context.Context , t * organization.Team , repos [] * repo_model. Repository ) (err error ) {
112111 e := db .GetEngine (ctx )
113112 // Delete all accesses.
114- for _ , repo := range t . Repos {
113+ for _ , repo := range repos {
115114 if err := access_model .RecalculateTeamAccesses (ctx , repo , t .ID ); err != nil {
116115 return err
117116 }
@@ -269,11 +268,14 @@ func UpdateTeam(ctx context.Context, t *organization.Team, authChanged, includeA
269268
270269 // Update access for team members if needed.
271270 if authChanged {
272- if err = t .LoadRepositories (ctx ); err != nil {
271+ repos , err := repo_model .GetTeamRepositories (ctx , & repo_model.SearchTeamRepoOptions {
272+ TeamID : t .ID ,
273+ })
274+ if err != nil {
273275 return fmt .Errorf ("LoadRepositories: %w" , err )
274276 }
275277
276- for _ , repo := range t . Repos {
278+ for _ , repo := range repos {
277279 if err = access_model .RecalculateTeamAccesses (ctx , repo , 0 ); err != nil {
278280 return fmt .Errorf ("recalculateTeamAccesses: %w" , err )
279281 }
@@ -300,10 +302,6 @@ func DeleteTeam(ctx context.Context, t *organization.Team) error {
300302 }
301303 defer committer .Close ()
302304
303- if err := t .LoadRepositories (ctx ); err != nil {
304- return err
305- }
306-
307305 if err := t .LoadMembers (ctx ); err != nil {
308306 return err
309307 }
@@ -325,7 +323,13 @@ func DeleteTeam(ctx context.Context, t *organization.Team) error {
325323 }
326324
327325 if ! t .IncludesAllRepositories {
328- if err := removeAllRepositories (ctx , t ); err != nil {
326+ repos , err := repo_model .GetTeamRepositories (ctx , & repo_model.SearchTeamRepoOptions {
327+ TeamID : t .ID ,
328+ })
329+ if err != nil {
330+ return fmt .Errorf ("GetTeamRepositories: %w" , err )
331+ }
332+ if err := removeAllRepositories (ctx , t , repos ); err != nil {
329333 return err
330334 }
331335 }
@@ -431,7 +435,10 @@ func AddTeamMember(ctx context.Context, team *organization.Team, user *user_mode
431435 // FIXME: Update watch repos batchly
432436 if setting .Service .AutoWatchNewRepos {
433437 // Get team and its repositories.
434- if err := team .LoadRepositories (ctx ); err != nil {
438+ repos , err := repo_model .GetTeamRepositories (ctx , & repo_model.SearchTeamRepoOptions {
439+ TeamID : team .ID ,
440+ })
441+ if err != nil {
435442 log .Error ("team.LoadRepositories failed: %v" , err )
436443 }
437444
@@ -442,7 +449,7 @@ func AddTeamMember(ctx context.Context, team *organization.Team, user *user_mode
442449 log .Error ("watch repo failed: %v" , err )
443450 }
444451 }
445- }(team . Repos )
452+ }(repos )
446453 }
447454
448455 return nil
@@ -462,7 +469,10 @@ func removeTeamMember(ctx context.Context, team *organization.Team, user *user_m
462469
463470 team .NumMembers --
464471
465- if err := team .LoadRepositories (ctx ); err != nil {
472+ repos , err := repo_model .GetTeamRepositories (ctx , & repo_model.SearchTeamRepoOptions {
473+ TeamID : team .ID ,
474+ })
475+ if err != nil {
466476 return err
467477 }
468478
@@ -480,7 +490,7 @@ func removeTeamMember(ctx context.Context, team *organization.Team, user *user_m
480490 }
481491
482492 // Delete access to team repositories.
483- for _ , repo := range team . Repos {
493+ for _ , repo := range repos {
484494 if err := access_model .RecalculateUserAccess (ctx , repo , user .ID ); err != nil {
485495 return err
486496 }
0 commit comments