aboutsummaryrefslogtreecommitdiffstats
path: root/services/repository/delete.go
diff options
context:
space:
mode:
author6543 <6543@obermui.de>2023-10-19 15:20:52 +0200
committerGitHub <noreply@github.com>2023-10-19 15:20:52 +0200
commite83f2cbbacd2696f26dde7105d7f07833c0cc33e (patch)
tree35d87113518a7efc8c511e0361a7652fe6afaac3 /services/repository/delete.go
parent3dc0c962bf3a74188bed02c01b4d34636112805a (diff)
downloadgitea-e83f2cbbacd2696f26dde7105d7f07833c0cc33e.tar.gz
gitea-e83f2cbbacd2696f26dde7105d7f07833c0cc33e.zip
Add doctor dbconsistency fix to delete repos with no owner (#27290)
to address #27273 replace #24873
Diffstat (limited to 'services/repository/delete.go')
-rw-r--r--services/repository/delete.go15
1 files changed, 9 insertions, 6 deletions
diff --git a/services/repository/delete.go b/services/repository/delete.go
index 9b0a988ea3..861dfa2dcd 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, repoID int64) error {
+func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, repoID int64, ignoreOrgTeams ...bool) error {
ctx, committer, err := db.TxContext(ctx)
if err != nil {
return err
@@ -65,10 +65,13 @@ func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, repoID
return fmt.Errorf("list actions artifacts of repo %v: %w", repoID, err)
}
- // In case is a organization.
- org, err := user_model.GetUserByID(ctx, repo.OwnerID)
- 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, repo.OwnerID); err != nil {
+ return err
+ }
}
// Delete Deploy Keys
@@ -93,7 +96,7 @@ func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, repoID
}
}
- if org.IsOrganization() {
+ if org != nil && org.IsOrganization() {
teams, err := organization.FindOrgTeams(ctx, org.ID)
if err != nil {
return err