From 4bda9b8d913a51ebdadda94831ee6441e4c33d76 Mon Sep 17 00:00:00 2001 From: DmitryFrolovTri <23313323+DmitryFrolovTri@users.noreply.github.com> Date: Fri, 12 Dec 2025 15:21:24 +0000 Subject: [PATCH] refactor repo settings for LimitSize and new gitea, size can be entered in XX YY where YY is the MiB MB etc --- routers/web/repo/setting/setting.go | 17 ++++++++++++++--- services/forms/repo_form.go | 2 +- templates/repo/settings/options.tmpl | 8 ++++---- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/routers/web/repo/setting/setting.go b/routers/web/repo/setting/setting.go index 15bb0e232ba..b023223d4bd 100644 --- a/routers/web/repo/setting/setting.go +++ b/routers/web/repo/setting/setting.go @@ -15,6 +15,7 @@ import ( repo_model "code.gitea.io/gitea/models/repo" unit_model "code.gitea.io/gitea/models/unit" user_model "code.gitea.io/gitea/models/user" + "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/gitrepo" "code.gitea.io/gitea/modules/indexer/code" @@ -213,18 +214,28 @@ func handleSettingsPostUpdate(ctx *context.Context) { repo.Website = form.Website repo.IsTemplate = form.Template - if form.RepoSizeLimit < 0 { + var repoSizeLimit int64 + var err error + if form.RepoSizeLimit != "" { + repoSizeLimit, err = base.GetFileSize(form.RepoSizeLimit) + if err != nil { + ctx.Data["Err_RepoSizeLimit"] = true + ctx.RenderWithErr(ctx.Tr("repo.form.invalid_repo_size_limit"), tplSettingsOptions, &form) + return + } + } + if repoSizeLimit < 0 { ctx.Data["Err_RepoSizeLimit"] = true ctx.RenderWithErr(ctx.Tr("repo.form.repo_size_limit_negative"), tplSettingsOptions, &form) return } - if !ctx.Doer.IsAdmin && repo.SizeLimit != form.RepoSizeLimit { + if !ctx.Doer.IsAdmin && repo.SizeLimit != repoSizeLimit { ctx.Data["Err_RepoSizeLimit"] = true ctx.RenderWithErr(ctx.Tr("repo.form.repo_size_limit_only_by_admins"), tplSettingsOptions, &form) return } - repo.SizeLimit = form.RepoSizeLimit + repo.SizeLimit = repoSizeLimit if err := repo_service.UpdateRepository(ctx, repo, false); err != nil { ctx.ServerError("UpdateRepository", err) diff --git a/services/forms/repo_form.go b/services/forms/repo_form.go index 76c7627a624..bc399f4576d 100644 --- a/services/forms/repo_form.go +++ b/services/forms/repo_form.go @@ -113,7 +113,7 @@ type RepoSettingForm struct { PushMirrorInterval string Template bool EnablePrune bool - RepoSizeLimit int64 + RepoSizeLimit string // Advanced settings EnableCode bool diff --git a/templates/repo/settings/options.tmpl b/templates/repo/settings/options.tmpl index 56f7a629f14..ee61e902b83 100644 --- a/templates/repo/settings/options.tmpl +++ b/templates/repo/settings/options.tmpl @@ -13,18 +13,18 @@