diff options
author | 6543 <6543@obermui.de> | 2023-10-22 02:21:41 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-22 02:21:41 +0200 |
commit | aabcf2d7ad247fb0bf8131ebdf8400fcf5292828 (patch) | |
tree | 552feecf1ac5d470b2a9072869d221bf2a099453 /services/repository | |
parent | 6919a02ab7acfa7939edc33cb5eb5fdb49d8721a (diff) | |
download | gitea-aabcf2d7ad247fb0bf8131ebdf8400fcf5292828.tar.gz gitea-aabcf2d7ad247fb0bf8131ebdf8400fcf5292828.zip |
Add doctor dbconsistency fix to delete repos with no owner (#27290) (#27693)
Backport #27290
Diffstat (limited to 'services/repository')
-rw-r--r-- | services/repository/delete.go | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/services/repository/delete.go b/services/repository/delete.go index f3bf91af4f..a06d8a803f 100644 --- a/services/repository/delete.go +++ b/services/repository/delete.go @@ -33,7 +33,7 @@ import ( // DeleteRepository deletes a repository for a user or organization. // make sure if you call this func to close open sessions (sqlite will otherwise get a deadlock) -func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, uid, repoID int64) error { +func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, uid, repoID int64, ignoreOrgTeams ...bool) error { ctx, committer, err := db.TxContext(ctx) if err != nil { return err @@ -53,10 +53,13 @@ func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, uid, r return fmt.Errorf("list actions artifacts of repo %v: %w", repoID, err) } - // In case is a organization. - org, err := user_model.GetUserByID(ctx, uid) - if err != nil { - return err + // In case owner is a organization, we have to change repo specific teams + // if ignoreOrgTeams is not true + var org *user_model.User + if len(ignoreOrgTeams) == 0 || !ignoreOrgTeams[0] { + if org, err = user_model.GetUserByID(ctx, uid); err != nil { + return err + } } repo := &repo_model.Repository{OwnerID: uid} @@ -95,7 +98,7 @@ func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, uid, r } } - if org.IsOrganization() { + if org != nil && org.IsOrganization() { teams, err := organization.FindOrgTeams(ctx, org.ID) if err != nil { return err |