From e5096f9cb045e27b6a0bc5c21dcaadb009aeea46 Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Fri, 12 May 2023 07:56:15 +0000 Subject: [PATCH 1/2] add --- routers/api/v1/repo/fork.go | 5 ++++- routers/web/repo/pull.go | 11 +++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/routers/api/v1/repo/fork.go b/routers/api/v1/repo/fork.go index e1e79c0e780ac..32f01bd9f318d 100644 --- a/routers/api/v1/repo/fork.go +++ b/routers/api/v1/repo/fork.go @@ -141,7 +141,10 @@ func CreateFork(ctx *context.APIContext) { Description: repo.Description, }) if err != nil { - if repo_service.IsErrForkAlreadyExist(err) || repo_model.IsErrRepoAlreadyExist(err) || repo_model.IsErrReachLimitOfRepo(err) { + if repo_service.IsErrForkAlreadyExist(err) || + repo_model.IsErrRepoAlreadyExist(err) || + repo_model.IsErrRepoFilesAlreadyExist(err) || + repo_model.IsErrReachLimitOfRepo(err) { ctx.Error(http.StatusConflict, "ForkRepository", err) } else { ctx.Error(http.StatusInternalServerError, "ForkRepository", err) diff --git a/routers/web/repo/pull.go b/routers/web/repo/pull.go index 070fc109dcec9..858feef0e691f 100644 --- a/routers/web/repo/pull.go +++ b/routers/web/repo/pull.go @@ -270,6 +270,17 @@ func ForkPost(ctx *context.Context) { ctx.RenderWithErr(msg, tplFork, &form) case repo_model.IsErrRepoAlreadyExist(err): ctx.RenderWithErr(ctx.Tr("repo.settings.new_owner_has_same_repo"), tplFork, &form) + case repo_model.IsErrRepoFilesAlreadyExist(err): + switch { + case ctx.IsUserSiteAdmin() || (setting.Repository.AllowAdoptionOfUnadoptedRepositories && setting.Repository.AllowDeleteOfUnadoptedRepositories): + ctx.RenderWithErr(ctx.Tr("form.repository_files_already_exist.adopt_or_delete"), tplFork, form) + case setting.Repository.AllowAdoptionOfUnadoptedRepositories: + ctx.RenderWithErr(ctx.Tr("form.repository_files_already_exist.adopt"), tplFork, form) + case setting.Repository.AllowDeleteOfUnadoptedRepositories: + ctx.RenderWithErr(ctx.Tr("form.repository_files_already_exist.delete"), tplFork, form) + default: + ctx.RenderWithErr(ctx.Tr("form.repository_files_already_exist"), tplFork, form) + } case db.IsErrNameReserved(err): ctx.RenderWithErr(ctx.Tr("repo.form.name_reserved", err.(db.ErrNameReserved).Name), tplFork, &form) case db.IsErrNamePatternNotAllowed(err): From 990363bd2d63efad683af50ccc0e5a454b2436a9 Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Mon, 22 May 2023 04:52:55 +0000 Subject: [PATCH 2/2] improve --- routers/api/v1/repo/fork.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/routers/api/v1/repo/fork.go b/routers/api/v1/repo/fork.go index 32f01bd9f318d..4cb3eddf58b06 100644 --- a/routers/api/v1/repo/fork.go +++ b/routers/api/v1/repo/fork.go @@ -5,6 +5,7 @@ package repo import ( + "errors" "fmt" "net/http" @@ -15,6 +16,7 @@ import ( user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/context" api "code.gitea.io/gitea/modules/structs" + "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/web" "code.gitea.io/gitea/routers/api/v1/utils" "code.gitea.io/gitea/services/convert" @@ -141,10 +143,7 @@ func CreateFork(ctx *context.APIContext) { Description: repo.Description, }) if err != nil { - if repo_service.IsErrForkAlreadyExist(err) || - repo_model.IsErrRepoAlreadyExist(err) || - repo_model.IsErrRepoFilesAlreadyExist(err) || - repo_model.IsErrReachLimitOfRepo(err) { + if errors.Is(err, util.ErrAlreadyExist) || repo_model.IsErrReachLimitOfRepo(err) { ctx.Error(http.StatusConflict, "ForkRepository", err) } else { ctx.Error(http.StatusInternalServerError, "ForkRepository", err)