mirror of
https://github.com/go-gitea/gitea.git
synced 2026-08-01 15:14:16 +00:00
b06002f449
1. simplify "StorageRepo" code 2. simplify git.OpenRepository code 3. by the way, clean up some unused files in git test fixtures.
61 lines
1.8 KiB
Go
61 lines
1.8 KiB
Go
// Copyright 2020 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package setting
|
|
|
|
import (
|
|
repo_model "gitea.dev/models/repo"
|
|
"gitea.dev/modules/gitrepo"
|
|
"gitea.dev/modules/setting"
|
|
"gitea.dev/services/context"
|
|
repo_service "gitea.dev/services/repository"
|
|
)
|
|
|
|
// AdoptOrDeleteRepository adopts or deletes a repository
|
|
func AdoptOrDeleteRepository(ctx *context.Context) {
|
|
ctx.Data["Title"] = ctx.Tr("settings.adopt")
|
|
ctx.Data["PageIsSettingsRepos"] = true
|
|
allowAdopt := ctx.IsUserSiteAdmin() || setting.Repository.AllowAdoptionOfUnadoptedRepositories
|
|
ctx.Data["allowAdopt"] = allowAdopt
|
|
allowDelete := ctx.IsUserSiteAdmin() || setting.Repository.AllowDeleteOfUnadoptedRepositories
|
|
ctx.Data["allowDelete"] = allowDelete
|
|
|
|
dir := ctx.FormString("id")
|
|
action := ctx.FormString("action")
|
|
|
|
ctxUser := ctx.Doer
|
|
|
|
// check not a repo
|
|
has, err := repo_model.IsRepositoryModelExist(ctx, ctxUser, dir)
|
|
if err != nil {
|
|
ctx.ServerError("IsRepositoryExist", err)
|
|
return
|
|
}
|
|
|
|
exist, err := gitrepo.IsRepositoryExist(ctx, repo_model.CodeRepoByName(ctxUser.Name, dir))
|
|
if err != nil {
|
|
ctx.ServerError("IsDir", err)
|
|
return
|
|
}
|
|
if has || !exist {
|
|
// Fallthrough to failure mode
|
|
} else if action == "adopt" && allowAdopt {
|
|
if _, err := repo_service.AdoptRepository(ctx, ctxUser, ctxUser, repo_service.CreateRepoOptions{
|
|
Name: dir,
|
|
IsPrivate: true,
|
|
}); err != nil {
|
|
ctx.ServerError("repository.AdoptRepository", err)
|
|
return
|
|
}
|
|
ctx.Flash.Success(ctx.Tr("repo.adopt_preexisting_success", dir))
|
|
} else if action == "delete" && allowDelete {
|
|
if err := repo_service.DeleteUnadoptedRepository(ctx, ctxUser, ctxUser, dir); err != nil {
|
|
ctx.ServerError("repository.AdoptRepository", err)
|
|
return
|
|
}
|
|
ctx.Flash.Success(ctx.Tr("repo.delete_preexisting_success", dir))
|
|
}
|
|
|
|
ctx.Redirect(setting.AppSubURL + "/user/settings/repos")
|
|
}
|