From 9ebae4a2aaca760bb2859d62d58b0633edb41db1 Mon Sep 17 00:00:00 2001 From: GiteaBot Date: Mon, 17 Mar 2025 00:35:08 +0000 Subject: [PATCH 01/12] [skip ci] Updated translations via Crowdin --- options/locale/locale_pt-PT.ini | 1 + options/locale/locale_zh-CN.ini | 17 ++++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini index 26a1d7708e..7dd8985cec 100644 --- a/options/locale/locale_pt-PT.ini +++ b/options/locale/locale_pt-PT.ini @@ -113,6 +113,7 @@ copy_type_unsupported=Este tipo de ficheiro não pode ser copiado write=Escrever preview=Pré-visualizar loading=Carregando… +files=Ficheiros error=Erro error404=A página que pretende aceder não existe ou não tem autorização para a ver. diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 74dfa57a01..2bd355c09e 100644 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -96,8 +96,8 @@ edit=编辑 view=查看 test=测试 -enabled=启用 -disabled=禁用 +enabled=已启用 +disabled=已禁用 locked=已锁定 copy=复制 @@ -148,7 +148,7 @@ name=名称 value=值 readme=自述文档 -filter=过滤 +filter=筛选 filter.clear=清除筛选器 filter.is_archived=已归档 filter.not_archived=非存档 @@ -159,7 +159,7 @@ filter.not_mirror=非镜像 filter.is_template=模板 filter.not_template=非模板 filter.public=公开 -filter.private=私有库 +filter.private=私有 no_results_found=未找到结果 internal_error_skipped=发生内部错误,但已被跳过: %s @@ -245,6 +245,7 @@ license_desc=所有的代码都开源在 官方文档 后再对本页面进行填写。 require_db_desc=Gitea 需要使用 MySQL、PostgreSQL、MSSQL、SQLite3 或 TiDB (MySQL协议) 等数据库 @@ -2870,7 +2871,7 @@ authentication=认证源 emails=用户邮件 config=应用配置 config_summary=摘要 -config_settings=组织设置 +config_settings=设置 notices=系统提示 monitor=监控面板 first_page=首页 @@ -3349,6 +3350,7 @@ monitor.previous=上次执行时间 monitor.execute_times=执行次数 monitor.process=运行中进程 monitor.stacktrace=调用栈踪迹 +monitor.performance_logs=性能日志 monitor.processes_count=%d 个进程 monitor.download_diagnosis_report=下载诊断报告 monitor.desc=进程描述 @@ -3529,12 +3531,12 @@ alpine.registry.info=从下面的列表中选择 $branch 和 $repository。 alpine.install=要安装包,请运行以下命令: alpine.repository=仓库信息 alpine.repository.branches=分支 -alpine.repository.repositories=仓库管理 +alpine.repository.repositories=仓库 alpine.repository.architectures=架构 arch.registry=添加具有相关仓库和架构的服务器到 /etc/pacman.conf 中: arch.install=使用 pacman 同步软件包: arch.repository=仓库信息 -arch.repository.repositories=仓库管理 +arch.repository.repositories=仓库 arch.repository.architectures=架构 cargo.registry=在 Cargo 配置文件中设置此注册中心(例如:~/.cargo/config.toml): cargo.install=要使用 Cargo 安装软件包,请运行以下命令: @@ -3552,6 +3554,7 @@ conda.install=要使用 Conda 安装软件包,请运行以下命令: container.details.type=镜像类型 container.details.platform=平台 container.pull=从命令行拉取镜像: +container.images=镜像 container.multi_arch=OS / Arch container.layers=镜像层 container.labels=标签 From 9d89dfe1425ac202e8b1d74ac28c5ed31b766fbd Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Mon, 17 Mar 2025 22:11:24 +0800 Subject: [PATCH 02/12] Remove unused or abused styles (#33918) * `top aligned` => `tw-align-top` * label list: it was broken, this PR fixes it * reference link: simplified * settings/repos: not affected --- templates/package/content/container.tmpl | 2 +- templates/repo/issue/labels/label_list.tmpl | 12 +++++----- .../repo/issue/sidebar/reference_link.tmpl | 10 ++++----- templates/user/settings/repos.tmpl | 2 +- web_src/css/modules/grid.css | 22 ------------------- web_src/css/modules/table.css | 10 --------- web_src/fomantic/build/components/form.css | 10 --------- web_src/fomantic/build/components/modal.css | 9 ++------ 8 files changed, 13 insertions(+), 64 deletions(-) diff --git a/templates/package/content/container.tmpl b/templates/package/content/container.tmpl index a88ebec3bc..7d89f8c6e2 100644 --- a/templates/package/content/container.tmpl +++ b/templates/package/content/container.tmpl @@ -82,7 +82,7 @@ {{range $key, $value := .PackageDescriptor.Metadata.Labels}} - {{$key}} + {{$key}} {{$value}} {{end}} diff --git a/templates/repo/issue/labels/label_list.tmpl b/templates/repo/issue/labels/label_list.tmpl index 822567301e..cdbcc456f0 100644 --- a/templates/repo/issue/labels/label_list.tmpl +++ b/templates/repo/issue/labels/label_list.tmpl @@ -63,13 +63,11 @@ {{if and (not .PageIsOrgSettingsLabels) (.OrgLabels)}}
  • -
    -
    - {{ctx.Locale.Tr "repo.org_labels_desc"}} - {{if .IsOrganizationOwner}} - ({{ctx.Locale.Tr "repo.org_labels_desc_manage"}}): - {{end}} -
    +
    {{/* parent is flex, so use block here to keep sentence spaces */}} + {{ctx.Locale.Tr "repo.org_labels_desc"}} + {{if .IsOrganizationOwner}} + ({{ctx.Locale.Tr "repo.org_labels_desc_manage"}}): + {{end}}
  • diff --git a/templates/repo/issue/sidebar/reference_link.tmpl b/templates/repo/issue/sidebar/reference_link.tmpl index 6b8f120c7b..ad7c0f6bc0 100644 --- a/templates/repo/issue/sidebar/reference_link.tmpl +++ b/templates/repo/issue/sidebar/reference_link.tmpl @@ -1,8 +1,6 @@
    -
    - {{$issueReferenceLink := printf "%s#%d" .Issue.Repo.FullName .Issue.Index}} -
    - {{ctx.Locale.Tr "repo.issues.reference_link" $issueReferenceLink}} - -
    +{{$issueReferenceLink := printf "%s#%d" .Issue.Repo.FullName .Issue.Index}} +
    + {{ctx.Locale.Tr "repo.issues.reference_link" $issueReferenceLink}} +
    diff --git a/templates/user/settings/repos.tmpl b/templates/user/settings/repos.tmpl index a50fb586c7..4aed8070de 100644 --- a/templates/user/settings/repos.tmpl +++ b/templates/user/settings/repos.tmpl @@ -81,7 +81,7 @@ {{end}} {{else}} {{if .Repos}} -
    +
    {{range .Repos}}
    diff --git a/web_src/css/modules/grid.css b/web_src/css/modules/grid.css index 05e28c513f..b4f4e16105 100644 --- a/web_src/css/modules/grid.css +++ b/web_src/css/modules/grid.css @@ -393,28 +393,6 @@ margin-right: 2.5rem; } -.ui[class*="middle aligned"].grid > .column:not(.row), -.ui[class*="middle aligned"].grid > .row > .column, -.ui.grid > [class*="middle aligned"].row > .column, -.ui.grid > [class*="middle aligned"].column:not(.row), -.ui.grid > .row > [class*="middle aligned"].column { - flex-direction: column; - vertical-align: middle; - align-self: center !important; -} - -.ui[class*="equal width"].grid > .column:not(.row), -.ui[class*="equal width"].grid > .row > .column, -.ui.grid > [class*="equal width"].row > .column { - display: inline-block; - flex-grow: 1; -} -.ui[class*="equal width"].grid > .wide.column, -.ui[class*="equal width"].grid > .row > .wide.column, -.ui.grid > [class*="equal width"].row > .wide.column { - flex-grow: 0; -} - @media only screen and (max-width: 767.98px) { .ui[class*="mobile reversed"].grid, .ui[class*="mobile reversed"].grid > .row, diff --git a/web_src/css/modules/table.css b/web_src/css/modules/table.css index 844675b5ae..eabca31a17 100644 --- a/web_src/css/modules/table.css +++ b/web_src/css/modules/table.css @@ -152,16 +152,6 @@ } } -.ui.table[class*="top aligned"], -.ui.table [class*="top aligned"] { - vertical-align: top; -} - -.ui.table[class*="middle aligned"], -.ui.table [class*="middle aligned"] { - vertical-align: middle; -} - .ui.table th.collapsing, .ui.table td.collapsing { width: 1px; diff --git a/web_src/fomantic/build/components/form.css b/web_src/fomantic/build/components/form.css index 66ccedf29a..0124e2d6b5 100644 --- a/web_src/fomantic/build/components/form.css +++ b/web_src/fomantic/build/components/form.css @@ -1499,16 +1499,6 @@ width: 100%; } -/*-------------------- - Equal Width ----------------------*/ - -.ui[class*="equal width"].form .fields > .field, -.ui.form [class*="equal width"].fields > .field { - width: 100%; - flex: 1 1 auto; -} - /*-------------------- Inline Fields ---------------------*/ diff --git a/web_src/fomantic/build/components/modal.css b/web_src/fomantic/build/components/modal.css index 87a7989510..7da015cfd0 100644 --- a/web_src/fomantic/build/components/modal.css +++ b/web_src/fomantic/build/components/modal.css @@ -116,12 +116,7 @@ align-self: start; max-width: 100%; } -.ui.modal > [class*="top aligned"] { - align-self: start; -} -.ui.modal > [class*="middle aligned"] { - align-self: center; -} + .ui.modal > [class*="stretched"] { align-self: stretch; } @@ -258,7 +253,7 @@ padding: 1rem 0 !important; box-shadow: none; } - + /* Let Buttons Stack */ .ui.modal > .actions { padding: 1rem 1rem 0rem !important; From e1feb438a49b194e73e504eb7018e4d50f3978cd Mon Sep 17 00:00:00 2001 From: Kerwin Bryant Date: Mon, 17 Mar 2025 22:55:15 +0800 Subject: [PATCH 03/12] Fix file tree issues (#33916) --- templates/repo/view_file_tree.tmpl | 4 ++-- web_src/css/markup/content.css | 1 - web_src/css/repo/home.css | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/templates/repo/view_file_tree.tmpl b/templates/repo/view_file_tree.tmpl index ce9b2e4d11..8aed05f346 100644 --- a/templates/repo/view_file_tree.tmpl +++ b/templates/repo/view_file_tree.tmpl @@ -1,5 +1,5 @@ -
    -
    {{template "base/modal_actions_confirm" (dict "ModalButtonTypes" "confirm")}} diff --git a/templates/shared/variables/variable_list.tmpl b/templates/shared/variables/variable_list.tmpl index 7a0ab48cef..2edca431c1 100644 --- a/templates/shared/variables/variable_list.tmpl +++ b/templates/shared/variables/variable_list.tmpl @@ -7,6 +7,7 @@ data-modal-header="{{ctx.Locale.Tr "actions.variables.creation"}}" data-modal-dialog-variable-name="" data-modal-dialog-variable-data="" + data-modal-dialog-variable-description="" > {{ctx.Locale.Tr "actions.variables.creation"}} @@ -24,6 +25,9 @@
    {{.Name}}
    +
    + {{if .Description}}{{.Description}}{{else}}-{{end}} +
    {{.Data}}
    @@ -39,6 +43,7 @@ data-modal-header="{{ctx.Locale.Tr "actions.variables.edit"}}" data-modal-dialog-variable-name="{{.Name}}" data-modal-dialog-variable-data="{{.Data}}" + data-modal-dialog-variable-description="{{.Description}}" > {{svg "octicon-pencil"}} @@ -82,9 +87,20 @@
    +
    + + +
    {{template "base/modal_actions_confirm" (dict "ModalButtonTypes" "confirm")}} diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index 48ed958ca2..1efaf1a875 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -19325,6 +19325,11 @@ "type": "string", "x-go-name": "Data" }, + "description": { + "description": "the description of the variable", + "type": "string", + "x-go-name": "Description" + }, "name": { "description": "the name of the variable", "type": "string", @@ -20988,6 +20993,11 @@ "description": "Data of the secret to update", "type": "string", "x-go-name": "Data" + }, + "description": { + "description": "Description of the secret to update", + "type": "string", + "x-go-name": "Description" } }, "x-go-package": "code.gitea.io/gitea/modules/structs" @@ -21498,6 +21508,11 @@ "value" ], "properties": { + "description": { + "description": "Description of the variable to create", + "type": "string", + "x-go-name": "Description" + }, "value": { "description": "Value of the variable to create", "type": "string", @@ -25459,6 +25474,11 @@ "format": "date-time", "x-go-name": "Created" }, + "description": { + "description": "the secret's description", + "type": "string", + "x-go-name": "Description" + }, "name": { "description": "the secret's name", "type": "string", @@ -26034,6 +26054,11 @@ "value" ], "properties": { + "description": { + "description": "Description of the variable to update", + "type": "string", + "x-go-name": "Description" + }, "name": { "description": "New name for the variable. If the field is empty, the variable name won't be updated.", "type": "string", diff --git a/tests/integration/actions_variables_test.go b/tests/integration/actions_variables_test.go index 1fd3294109..c0d0bd371b 100644 --- a/tests/integration/actions_variables_test.go +++ b/tests/integration/actions_variables_test.go @@ -27,21 +27,21 @@ func TestActionsVariables(t *testing.T) { require.NoError(t, db.DeleteAllRecords("action_variable")) user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) - _, _ = actions_model.InsertVariable(ctx, user2.ID, 0, "VAR", "user2-var") + _, _ = actions_model.InsertVariable(ctx, user2.ID, 0, "VAR", "user2-var", "user2-var-description") user2Var := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionVariable{OwnerID: user2.ID, Name: "VAR"}) userWebURL := "/user/settings/actions/variables" org3 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 3, Type: user_model.UserTypeOrganization}) - _, _ = actions_model.InsertVariable(ctx, org3.ID, 0, "VAR", "org3-var") + _, _ = actions_model.InsertVariable(ctx, org3.ID, 0, "VAR", "org3-var", "org3-var-description") org3Var := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionVariable{OwnerID: org3.ID, Name: "VAR"}) orgWebURL := "/org/org3/settings/actions/variables" repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) - _, _ = actions_model.InsertVariable(ctx, 0, repo1.ID, "VAR", "repo1-var") + _, _ = actions_model.InsertVariable(ctx, 0, repo1.ID, "VAR", "repo1-var", "repo1-var-description") repo1Var := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionVariable{RepoID: repo1.ID, Name: "VAR"}) repoWebURL := "/user2/repo1/settings/actions/variables" - _, _ = actions_model.InsertVariable(ctx, 0, 0, "VAR", "global-var") + _, _ = actions_model.InsertVariable(ctx, 0, 0, "VAR", "global-var", "global-var-description") globalVar := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionVariable{Name: "VAR", Data: "global-var"}) adminWebURL := "/-/admin/actions/variables" diff --git a/tests/integration/api_repo_secrets_test.go b/tests/integration/api_repo_secrets_test.go index c3074d9ece..2059aff484 100644 --- a/tests/integration/api_repo_secrets_test.go +++ b/tests/integration/api_repo_secrets_test.go @@ -73,6 +73,33 @@ func TestAPIRepoSecrets(t *testing.T) { } }) + t.Run("CreateWithDescription", func(t *testing.T) { + cases := []struct { + Name string + Description string + ExpectedStatus int + }{ + { + Name: "no_description", + Description: "", + ExpectedStatus: http.StatusCreated, + }, + { + Name: "description", + Description: "some description", + ExpectedStatus: http.StatusCreated, + }, + } + + for _, c := range cases { + req := NewRequestWithJSON(t, "PUT", fmt.Sprintf("/api/v1/repos/%s/actions/secrets/%s", repo.FullName(), c.Name), api.CreateOrUpdateSecretOption{ + Data: "data", + Description: c.Description, + }).AddTokenAuth(token) + MakeRequest(t, req, c.ExpectedStatus) + } + }) + t.Run("Update", func(t *testing.T) { name := "update_secret" url := fmt.Sprintf("/api/v1/repos/%s/actions/secrets/%s", repo.FullName(), name) From 6e73ecf667260009719b16b6ad1c049d2772e07d Mon Sep 17 00:00:00 2001 From: metiftikci Date: Mon, 17 Mar 2025 22:25:27 +0300 Subject: [PATCH 07/12] update go version for devcontainers (#33923) --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 9f9f6f27d1..ab30e1789d 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,6 @@ { "name": "Gitea DevContainer", - "image": "mcr.microsoft.com/devcontainers/go:1.23-bookworm", + "image": "mcr.microsoft.com/devcontainers/go:1.24-bookworm", "features": { // installs nodejs into container "ghcr.io/devcontainers/features/node:1": { From 1b4adc0255f0b0e4d2434bf6d7e12e5390b5fc8b Mon Sep 17 00:00:00 2001 From: GiteaBot Date: Tue, 18 Mar 2025 00:33:31 +0000 Subject: [PATCH 08/12] [skip ci] Updated translations via Crowdin --- options/locale/locale_cs-CZ.ini | 1 + options/locale/locale_de-DE.ini | 1 + options/locale/locale_el-GR.ini | 1 + options/locale/locale_es-ES.ini | 1 + options/locale/locale_fa-IR.ini | 1 + options/locale/locale_fi-FI.ini | 1 + options/locale/locale_fr-FR.ini | 1 + options/locale/locale_ga-IE.ini | 1 + options/locale/locale_hu-HU.ini | 1 + options/locale/locale_id-ID.ini | 1 + options/locale/locale_is-IS.ini | 1 + options/locale/locale_it-IT.ini | 1 + options/locale/locale_ja-JP.ini | 1 + options/locale/locale_ko-KR.ini | 1 + options/locale/locale_lv-LV.ini | 1 + options/locale/locale_nl-NL.ini | 1 + options/locale/locale_pl-PL.ini | 1 + options/locale/locale_pt-BR.ini | 3 ++- options/locale/locale_pt-PT.ini | 1 + options/locale/locale_ru-RU.ini | 1 + options/locale/locale_si-LK.ini | 1 + options/locale/locale_sv-SE.ini | 1 + options/locale/locale_tr-TR.ini | 1 + options/locale/locale_uk-UA.ini | 1 + options/locale/locale_zh-CN.ini | 1 + options/locale/locale_zh-HK.ini | 1 + options/locale/locale_zh-TW.ini | 1 + 27 files changed, 28 insertions(+), 1 deletion(-) diff --git a/options/locale/locale_cs-CZ.ini b/options/locale/locale_cs-CZ.ini index c66258b386..41c770452f 100644 --- a/options/locale/locale_cs-CZ.ini +++ b/options/locale/locale_cs-CZ.ini @@ -3679,6 +3679,7 @@ secrets=Tajné klíče description=Tejné klíče budou předány určitým akcím a nelze je přečíst jinak. none=Zatím zde nejsou žádné tajné klíče. creation=Přidat tajný klíč +creation.description=Popis creation.name_placeholder=nerozlišovat velká a malá písmena, pouze alfanumerické znaky nebo podtržítka, nemohou začínat na GITEA_ nebo GITHUB_ creation.value_placeholder=Vložte jakýkoliv obsah. Mezery na začátku a konci budou vynechány. creation.success=Tajný klíč „%s“ byl přidán. diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini index 513ce39137..c9e7f5edab 100644 --- a/options/locale/locale_de-DE.ini +++ b/options/locale/locale_de-DE.ini @@ -3670,6 +3670,7 @@ secrets=Secrets description=Secrets werden an bestimmte Aktionen weitergegeben und können nicht anderweitig ausgelesen werden. none=Noch keine Secrets vorhanden. creation=Secret hinzufügen +creation.description=Beschreibung creation.name_placeholder=Groß-/Kleinschreibung wird ignoriert, nur alphanumerische Zeichen oder Unterstriche, darf nicht mit GITEA_ oder GITHUB_ beginnen creation.value_placeholder=Beliebigen Inhalt eingeben. Leerzeichen am Anfang und Ende werden weggelassen. creation.success=Das Secret "%s" wurde hinzugefügt. diff --git a/options/locale/locale_el-GR.ini b/options/locale/locale_el-GR.ini index df5e5e9553..09ae6f5a87 100644 --- a/options/locale/locale_el-GR.ini +++ b/options/locale/locale_el-GR.ini @@ -3338,6 +3338,7 @@ secrets=Μυστικά description=Τα μυστικά θα περάσουν σε ορισμένες δράσεις και δεν μπορούν να αναγνωστούν αλλού. none=Δεν υπάρχουν ακόμα μυστικά. creation=Προσθήκη Μυστικού +creation.description=Περιγραφή creation.name_placeholder=αλφαριθμητικοί χαρακτήρες ή κάτω παύλες μόνο, δεν μπορούν να ξεκινούν με GITEA_ ή GITHUB_ creation.value_placeholder=Εισάγετε οποιοδήποτε περιεχόμενο. Τα κενά στην αρχή παραλείπονται. creation.success=Το μυστικό "%s" προστέθηκε. diff --git a/options/locale/locale_es-ES.ini b/options/locale/locale_es-ES.ini index f856eaebd6..1a0ee9be8e 100644 --- a/options/locale/locale_es-ES.ini +++ b/options/locale/locale_es-ES.ini @@ -3318,6 +3318,7 @@ secrets=Secretos description=Los secretos pasarán a ciertas acciones y no se podrán leer de otro modo. none=Todavía no hay secretos. creation=Añadir secreto +creation.description=Descripción creation.name_placeholder=sin distinción de mayúsculas, solo carácteres alfanuméricos o guiones bajos, no puede empezar por GITEA_ o GITHUB_ creation.value_placeholder=Introduce cualquier contenido. Se omitirá el espacio en blanco en el inicio y el final. creation.success=El secreto "%s" ha sido añadido. diff --git a/options/locale/locale_fa-IR.ini b/options/locale/locale_fa-IR.ini index c82cfc61bd..147c570ca0 100644 --- a/options/locale/locale_fa-IR.ini +++ b/options/locale/locale_fa-IR.ini @@ -2513,6 +2513,7 @@ conan.details.repository=مخزن owner.settings.cleanuprules.enabled=فعال شده [secrets] +creation.description=شرح [actions] diff --git a/options/locale/locale_fi-FI.ini b/options/locale/locale_fi-FI.ini index d78a06ae20..e853273375 100644 --- a/options/locale/locale_fi-FI.ini +++ b/options/locale/locale_fi-FI.ini @@ -1694,6 +1694,7 @@ conan.details.repository=Repo owner.settings.cleanuprules.enabled=Käytössä [secrets] +creation.description=Kuvaus [actions] diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini index 11a7960bc9..9964bcc077 100644 --- a/options/locale/locale_fr-FR.ini +++ b/options/locale/locale_fr-FR.ini @@ -3705,6 +3705,7 @@ secrets=Secrets description=Les secrets seront transmis à certaines actions et ne pourront pas être lus autrement. none=Il n'y a pas encore de secrets. creation=Ajouter un secret +creation.description=Description creation.name_placeholder=Caractères alphanumériques ou tirets bas uniquement, insensibles à la casse, ne peut commencer par GITEA_ ou GITHUB_. creation.value_placeholder=Entrez n’importe quoi. Les blancs cernant seront taillés. creation.success=Le secret "%s" a été ajouté. diff --git a/options/locale/locale_ga-IE.ini b/options/locale/locale_ga-IE.ini index 2371e807e2..aa79a03a3a 100644 --- a/options/locale/locale_ga-IE.ini +++ b/options/locale/locale_ga-IE.ini @@ -3705,6 +3705,7 @@ secrets=Rúin description=Cuirfear rúin ar aghaidh chuig gníomhartha áirithe agus ní féidir iad a léamh ar mhalairt. none=Níl aon rúin ann fós. creation=Cuir Rúnda leis +creation.description=Cur síos creation.name_placeholder=carachtair alfanumair nó íoslaghda amháin nach féidir a thosú le GITEA_ nó GITHUB_ creation.value_placeholder=Ionchur ábhar ar bith. Fágfar spás bán ag tús agus ag deireadh ar lár. creation.success=Tá an rún "%s" curtha leis. diff --git a/options/locale/locale_hu-HU.ini b/options/locale/locale_hu-HU.ini index 08a71c27d2..f4f0bed24c 100644 --- a/options/locale/locale_hu-HU.ini +++ b/options/locale/locale_hu-HU.ini @@ -1598,6 +1598,7 @@ conan.details.repository=Tároló owner.settings.cleanuprules.enabled=Engedélyezett [secrets] +creation.description=Leírás [actions] diff --git a/options/locale/locale_id-ID.ini b/options/locale/locale_id-ID.ini index 2beade34ad..10d8c43c5b 100644 --- a/options/locale/locale_id-ID.ini +++ b/options/locale/locale_id-ID.ini @@ -1398,6 +1398,7 @@ conan.details.repository=Repositori owner.settings.cleanuprules.enabled=Aktif [secrets] +creation.description=Deskripsi [actions] diff --git a/options/locale/locale_is-IS.ini b/options/locale/locale_is-IS.ini index 98a8615130..ee5eb4a7dd 100644 --- a/options/locale/locale_is-IS.ini +++ b/options/locale/locale_is-IS.ini @@ -1326,6 +1326,7 @@ npm.details.tag=Merki pypi.requires=Þarfnast Python [secrets] +creation.description=Lýsing [actions] diff --git a/options/locale/locale_it-IT.ini b/options/locale/locale_it-IT.ini index 48a43210bf..b3564eb8f7 100644 --- a/options/locale/locale_it-IT.ini +++ b/options/locale/locale_it-IT.ini @@ -2790,6 +2790,7 @@ settings.delete.error=Impossibile eliminare il pacchetto. owner.settings.cleanuprules.enabled=Attivo [secrets] +creation.description=Descrizione [actions] diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini index b33f794bdb..dd88f3eeaa 100644 --- a/options/locale/locale_ja-JP.ini +++ b/options/locale/locale_ja-JP.ini @@ -3699,6 +3699,7 @@ secrets=シークレット description=シークレットは特定のActionsに渡されます。 それ以外で読み出されることはありません。 none=シークレットはまだありません。 creation=シークレットを追加 +creation.description=説明 creation.name_placeholder=大文字小文字の区別なし、英数字とアンダースコアのみ、GITEA_ や GITHUB_ で始まるものは不可 creation.value_placeholder=内容を入力してください。前後の空白は除去されます。 creation.success=シークレット "%s" を追加しました。 diff --git a/options/locale/locale_ko-KR.ini b/options/locale/locale_ko-KR.ini index a570a05274..601c203aba 100644 --- a/options/locale/locale_ko-KR.ini +++ b/options/locale/locale_ko-KR.ini @@ -1547,6 +1547,7 @@ conan.details.repository=저장소 owner.settings.cleanuprules.enabled=활성화됨 [secrets] +creation.description=설명 [actions] diff --git a/options/locale/locale_lv-LV.ini b/options/locale/locale_lv-LV.ini index bc8cab4781..975943ec91 100644 --- a/options/locale/locale_lv-LV.ini +++ b/options/locale/locale_lv-LV.ini @@ -3341,6 +3341,7 @@ secrets=Noslēpumi description=Noslēpumi tiks padoti atsevišķām darbībām un citādi nevar tikt nolasīti. none=Pagaidām nav neviena noslēpuma. creation=Pievienot noslēpumu +creation.description=Apraksts creation.name_placeholder=reģistr-nejūtīgs, tikai burti, cipari un apakšsvītras, nevar sākties ar GITEA_ vai GITHUB_ creation.value_placeholder=Ievadiet jebkādu saturu. Atstarpes sākumā un beigā tiks noņemtas. creation.success=Noslēpums "%s" tika pievienots. diff --git a/options/locale/locale_nl-NL.ini b/options/locale/locale_nl-NL.ini index 650e8d4e23..efea6b82df 100644 --- a/options/locale/locale_nl-NL.ini +++ b/options/locale/locale_nl-NL.ini @@ -2523,6 +2523,7 @@ settings.link.button=Repository link bijwerken owner.settings.cleanuprules.enabled=Ingeschakeld [secrets] +creation.description=Omschrijving [actions] diff --git a/options/locale/locale_pl-PL.ini b/options/locale/locale_pl-PL.ini index 55a82e9629..1e6268e2be 100644 --- a/options/locale/locale_pl-PL.ini +++ b/options/locale/locale_pl-PL.ini @@ -2412,6 +2412,7 @@ conan.details.repository=Repozytorium owner.settings.cleanuprules.enabled=Włączone [secrets] +creation.description=Opis [actions] diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini index f4b479344d..b23e45088d 100644 --- a/options/locale/locale_pt-BR.ini +++ b/options/locale/locale_pt-BR.ini @@ -2194,7 +2194,7 @@ settings.protect_check_status_contexts_list=Verificações de status encontradas settings.protect_required_approvals=Aprovações necessárias: settings.dismiss_stale_approvals=Descartar aprovações obsoletas settings.dismiss_stale_approvals_desc=Quando novos commits que mudam o conteúdo do pull request são enviados para o branch, as antigas aprovações serão descartadas. -settings.require_signed_commits=Exibir commits assinados +settings.require_signed_commits=Exigir commits assinados settings.require_signed_commits_desc=Rejeitar pushes para este branch se não estiverem assinados ou não forem validáveis. settings.protect_branch_name_pattern=Padrão de Nome de Branch Protegida settings.protect_patterns=Padrões @@ -3278,6 +3278,7 @@ secrets=Segredos description=Os segredos serão passados a certas ações e não poderão ser lidos de outra forma. none=Não há segredos ainda. creation=Adicionar Segredo +creation.description=Descrição creation.name_placeholder=apenas caracteres alfanuméricos ou underline (_), não pode começar com GITEA_ ou GITHUB_ creation.value_placeholder=Insira qualquer conteúdo. Espaços em branco no início e no fim serão omitidos. creation.success=O segredo "%s" foi adicionado. diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini index 7dd8985cec..89d708a0df 100644 --- a/options/locale/locale_pt-PT.ini +++ b/options/locale/locale_pt-PT.ini @@ -3711,6 +3711,7 @@ secrets=Segredos description=Os segredos serão transmitidos a certas operações e não poderão ser lidos de outra forma. none=Ainda não há segredos. creation=Adicionar segredo +creation.description=Descrição creation.name_placeholder=Só sublinhados ou alfanuméricos sem distinguir maiúsculas, sem começar com GITEA_ nem GITHUB_ creation.value_placeholder=Insira um conteúdo qualquer. Espaços em branco no início ou no fim serão omitidos. creation.success=O segredo "%s" foi adicionado. diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini index b8126089e9..6b08ec9e5c 100644 --- a/options/locale/locale_ru-RU.ini +++ b/options/locale/locale_ru-RU.ini @@ -3275,6 +3275,7 @@ secrets=Секреты description=Секреты будут передаваться определенным действиям и не могут быть прочитаны иначе. none=Секретов пока нет. creation=Добавить секрет +creation.description=Описание creation.name_placeholder=регистр не важен, только алфавитно-цифровые символы и подчёркивания, не может начинаться с GITEA_ или GITHUB_ creation.value_placeholder=Введите любое содержимое. Пробельные символы в начале и конце будут опущены. creation.success=Секрет «%s» добавлен. diff --git a/options/locale/locale_si-LK.ini b/options/locale/locale_si-LK.ini index 4857fa8d88..0f5ae91e40 100644 --- a/options/locale/locale_si-LK.ini +++ b/options/locale/locale_si-LK.ini @@ -2454,6 +2454,7 @@ conan.details.repository=කෝෂ්ඨය owner.settings.cleanuprules.enabled=සබල කර ඇත [secrets] +creation.description=සවිස්තරය [actions] diff --git a/options/locale/locale_sv-SE.ini b/options/locale/locale_sv-SE.ini index 0d3d0f5fc4..d79d751ea3 100644 --- a/options/locale/locale_sv-SE.ini +++ b/options/locale/locale_sv-SE.ini @@ -1989,6 +1989,7 @@ conan.details.repository=Utvecklingskatalog owner.settings.cleanuprules.enabled=Aktiv [secrets] +creation.description=Beskrivning [actions] diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini index b420e562c4..d00cce5006 100644 --- a/options/locale/locale_tr-TR.ini +++ b/options/locale/locale_tr-TR.ini @@ -3534,6 +3534,7 @@ secrets=Gizlilikler description=Gizlilikler belirli işlemlere aktarılacaktır, bunun dışında okunamaz. none=Henüz gizlilik yok. creation=Gizlilik Ekle +creation.description=Açıklama creation.name_placeholder=küçük-büyük harfe duyarlı değil, alfanümerik karakterler veya sadece alt tire, GITEA_ veya GITHUB_ ile başlayamaz creation.value_placeholder=Herhangi bir içerik girin. Baştaki ve sondaki boşluklar ihmal edilecektir. creation.success=Gizlilik "%s" eklendi. diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini index 4071659304..3b3017a127 100644 --- a/options/locale/locale_uk-UA.ini +++ b/options/locale/locale_uk-UA.ini @@ -2524,6 +2524,7 @@ conan.details.repository=Репозиторій owner.settings.cleanuprules.enabled=Увімкнено [secrets] +creation.description=Опис [actions] diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 2bd355c09e..d6ef36dede 100644 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -3658,6 +3658,7 @@ secrets=密钥 description=Secrets 将被传给特定的 Actions,其它情况将不能读取 none=还没有密钥。 creation=添加密钥 +creation.description=组织描述 creation.name_placeholder=不区分大小写,字母数字或下划线不能以GITEA_ 或 GITHUB_ 开头。 creation.value_placeholder=输入任何内容,开头和结尾的空白都会被省略 creation.success=您的密钥 '%s' 添加成功。 diff --git a/options/locale/locale_zh-HK.ini b/options/locale/locale_zh-HK.ini index 3733d95ec8..b924faba09 100644 --- a/options/locale/locale_zh-HK.ini +++ b/options/locale/locale_zh-HK.ini @@ -963,6 +963,7 @@ conan.details.repository=儲存庫 owner.settings.cleanuprules.enabled=已啟用 [secrets] +creation.description=組織描述 [actions] diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini index 4bc3259586..8b6dc3afcb 100644 --- a/options/locale/locale_zh-TW.ini +++ b/options/locale/locale_zh-TW.ini @@ -3646,6 +3646,7 @@ secrets=Secret description=Secret 會被傳給特定的 Action,其他情況無法讀取。 none=還沒有 Secret。 creation=加入 Secret +creation.description=描述 creation.name_placeholder=不區分大小寫,只能包含英文字母、數字、底線 ('_'),不能以 GITEA_ 或 GITHUB_ 開頭。 creation.value_placeholder=輸入任何內容,頭尾的空白都會被忽略。 creation.success=已新增 Secret「%s」。 From dcbf6c2d13b5ebd59a22a168f6d0d5bc0c013e87 Mon Sep 17 00:00:00 2001 From: Kerwin Bryant Date: Wed, 19 Mar 2025 00:59:33 +0800 Subject: [PATCH 09/12] Optimize Layout Styles of Filelist (#33920) Align items --------- Co-authored-by: wxiaoguang --- templates/repo/view_list.tmpl | 12 +++++++----- web_src/css/repo/home-file-list.css | 18 ++++++++++++++---- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/templates/repo/view_list.tmpl b/templates/repo/view_list.tmpl index b4d27fb1e3..4745110dd2 100644 --- a/templates/repo/view_list.tmpl +++ b/templates/repo/view_list.tmpl @@ -14,19 +14,21 @@ {{$entry := $item.Entry}} {{$commit := $item.Commit}} {{$submoduleFile := $item.SubmoduleFile}} -
    + diff --git a/web_src/css/repo/home-file-list.css b/web_src/css/repo/home-file-list.css index 189b6406d4..46128457ed 100644 --- a/web_src/css/repo/home-file-list.css +++ b/web_src/css/repo/home-file-list.css @@ -14,10 +14,6 @@ } } -#repo-files-table .repo-file-cell.name .svg { - margin-right: 2px; -} - #repo-files-table .svg.octicon-file-directory-fill, #repo-files-table .svg.octicon-file-submodule { color: var(--color-primary); @@ -70,11 +66,25 @@ } #repo-files-table .repo-file-cell.name { + display: flex; + align-items: center; + gap: 0.5em; + overflow: hidden; +} + +#repo-files-table .repo-file-cell.name > a, +#repo-files-table .repo-file-cell.name > span { + flex-shrink: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } +#repo-files-table .repo-file-cell.name .entry-name { + flex-shrink: 1; + min-width: 3em; +} + @media (max-width: 767.98px) { #repo-files-table .repo-file-cell.name { max-width: 35vw; From 39fc2e728597882d4b63717287d463fd23eff1cc Mon Sep 17 00:00:00 2001 From: GiteaBot Date: Wed, 19 Mar 2025 00:33:36 +0000 Subject: [PATCH 10/12] [skip ci] Updated translations via Crowdin --- options/locale/locale_pt-PT.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini index 89d708a0df..5b6672c266 100644 --- a/options/locale/locale_pt-PT.ini +++ b/options/locale/locale_pt-PT.ini @@ -3714,6 +3714,7 @@ creation=Adicionar segredo creation.description=Descrição creation.name_placeholder=Só sublinhados ou alfanuméricos sem distinguir maiúsculas, sem começar com GITEA_ nem GITHUB_ creation.value_placeholder=Insira um conteúdo qualquer. Espaços em branco no início ou no fim serão omitidos. +creation.description_placeholder=Escreva uma descrição curta (opcional). creation.success=O segredo "%s" foi adicionado. creation.failed=Falhou ao adicionar o segredo. deletion=Remover segredo From e25f860735e27ff8f62c6a256bfbda34e8491acb Mon Sep 17 00:00:00 2001 From: YaFou <33806646+YaFou@users.noreply.github.com> Date: Wed, 19 Mar 2025 12:49:05 +0100 Subject: [PATCH 11/12] Fix "toAbsoluteLocaleDate" test when system locale is not en-US (#33939) --- web_src/js/webcomponents/absolute-date.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web_src/js/webcomponents/absolute-date.test.ts b/web_src/js/webcomponents/absolute-date.test.ts index a3866829a7..bf591358bd 100644 --- a/web_src/js/webcomponents/absolute-date.test.ts +++ b/web_src/js/webcomponents/absolute-date.test.ts @@ -20,7 +20,7 @@ test('toAbsoluteLocaleDate', () => { // test different timezone const oldTZ = process.env.TZ; process.env.TZ = 'America/New_York'; - expect(new Date('2024-03-15').toLocaleString()).toEqual('3/14/2024, 8:00:00 PM'); - expect(toAbsoluteLocaleDate('2024-03-15')).toEqual('3/15/2024, 12:00:00 AM'); + expect(new Date('2024-03-15').toLocaleString('en-US')).toEqual('3/14/2024, 8:00:00 PM'); + expect(toAbsoluteLocaleDate('2024-03-15', 'en-US')).toEqual('3/15/2024, 12:00:00 AM'); process.env.TZ = oldTZ; }); From a9e8ac0fe0084af33a8e2bb0b3d8d3971755276e Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 19 Mar 2025 11:17:19 -0700 Subject: [PATCH 12/12] Don't create duplicated functions for code repositories and wiki repositories (#33924) Fix https://github.com/go-gitea/gitea/pull/33910#pullrequestreview-2688913865 This PR changed the Repositroy interface in `gitrepo` package which makes it only focus the relative path in the disk and abstract whether it's a wiki repository or not. --- models/repo/repo.go | 20 ++++++++++++++++---- modules/gitrepo/branch.go | 12 ------------ modules/gitrepo/gitrepo.go | 26 +++++++------------------- modules/gitrepo/hooks.go | 18 ++++-------------- modules/repository/init.go | 2 +- routers/api/v1/repo/wiki.go | 2 +- routers/web/repo/commit.go | 4 ++-- routers/web/repo/compare.go | 2 +- routers/web/repo/wiki.go | 4 ++-- routers/web/repo/wiki_test.go | 2 +- services/asymkey/sign.go | 2 +- services/doctor/misc.go | 4 ++-- services/mirror/mirror_push.go | 2 +- services/repository/adopt.go | 2 +- services/repository/fork.go | 2 +- services/repository/hooks.go | 4 ++-- services/repository/migrate.go | 4 ++-- services/repository/transfer.go | 5 +++-- services/wiki/wiki.go | 8 ++++---- services/wiki/wiki_test.go | 8 ++++---- 20 files changed, 56 insertions(+), 77 deletions(-) diff --git a/models/repo/repo.go b/models/repo/repo.go index 13473699f3..a8732f60bf 100644 --- a/models/repo/repo.go +++ b/models/repo/repo.go @@ -215,12 +215,24 @@ func init() { db.RegisterModel(new(Repository)) } -func (repo *Repository) GetName() string { - return repo.Name +func RelativePath(ownerName, repoName string) string { + return strings.ToLower(ownerName) + "/" + strings.ToLower(repoName) + ".git" } -func (repo *Repository) GetOwnerName() string { - return repo.OwnerName +// RelativePath should be an unix style path like username/reponame.git +func (repo *Repository) RelativePath() string { + return RelativePath(repo.OwnerName, repo.Name) +} + +type StorageRepo string + +// RelativePath should be an unix style path like username/reponame.git +func (sr StorageRepo) RelativePath() string { + return string(sr) +} + +func (repo *Repository) WikiStorageRepo() StorageRepo { + return StorageRepo(strings.ToLower(repo.OwnerName) + "/" + strings.ToLower(repo.Name) + ".wiki.git") } // SanitizedOriginalURL returns a sanitized OriginalURL diff --git a/modules/gitrepo/branch.go b/modules/gitrepo/branch.go index 9c4bdc5bdf..25ea5abfca 100644 --- a/modules/gitrepo/branch.go +++ b/modules/gitrepo/branch.go @@ -44,24 +44,12 @@ func GetDefaultBranch(ctx context.Context, repo Repository) (string, error) { return git.GetDefaultBranch(ctx, repoPath(repo)) } -func GetWikiDefaultBranch(ctx context.Context, repo Repository) (string, error) { - return git.GetDefaultBranch(ctx, wikiPath(repo)) -} - // IsReferenceExist returns true if given reference exists in the repository. func IsReferenceExist(ctx context.Context, repo Repository, name string) bool { return git.IsReferenceExist(ctx, repoPath(repo), name) } -func IsWikiReferenceExist(ctx context.Context, repo Repository, name string) bool { - return git.IsReferenceExist(ctx, wikiPath(repo), name) -} - // IsBranchExist returns true if given branch exists in the repository. func IsBranchExist(ctx context.Context, repo Repository, name string) bool { return IsReferenceExist(ctx, repo, git.BranchPrefix+name) } - -func IsWikiBranchExist(ctx context.Context, repo Repository, name string) bool { - return IsWikiReferenceExist(ctx, repo, git.BranchPrefix+name) -} diff --git a/modules/gitrepo/gitrepo.go b/modules/gitrepo/gitrepo.go index 5e2ec9ed1e..5da65e2452 100644 --- a/modules/gitrepo/gitrepo.go +++ b/modules/gitrepo/gitrepo.go @@ -8,7 +8,6 @@ import ( "fmt" "io" "path/filepath" - "strings" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/reqctx" @@ -16,21 +15,15 @@ import ( "code.gitea.io/gitea/modules/util" ) +// Repository represents a git repository which stored in a disk type Repository interface { - GetName() string - GetOwnerName() string -} - -func absPath(owner, name string) string { - return filepath.Join(setting.RepoRootPath, strings.ToLower(owner), strings.ToLower(name)+".git") + RelativePath() string // We don't assume how the directory structure of the repository is, so we only need the relative path } +// RelativePath should be an unix style path like username/reponame.git +// This method should change it according to the current OS. func repoPath(repo Repository) string { - return absPath(repo.GetOwnerName(), repo.GetName()) -} - -func wikiPath(repo Repository) string { - return filepath.Join(setting.RepoRootPath, strings.ToLower(repo.GetOwnerName()), strings.ToLower(repo.GetName())+".wiki.git") + return filepath.Join(setting.RepoRootPath, filepath.FromSlash(repo.RelativePath())) } // OpenRepository opens the repository at the given relative path with the provided context. @@ -38,10 +31,6 @@ func OpenRepository(ctx context.Context, repo Repository) (*git.Repository, erro return git.OpenRepository(ctx, repoPath(repo)) } -func OpenWikiRepository(ctx context.Context, repo Repository) (*git.Repository, error) { - return git.OpenRepository(ctx, wikiPath(repo)) -} - // contextKey is a value for use with context.WithValue. type contextKey struct { repoPath string @@ -86,9 +75,8 @@ func DeleteRepository(ctx context.Context, repo Repository) error { } // RenameRepository renames a repository's name on disk -func RenameRepository(ctx context.Context, repo Repository, newName string) error { - newRepoPath := absPath(repo.GetOwnerName(), newName) - if err := util.Rename(repoPath(repo), newRepoPath); err != nil { +func RenameRepository(ctx context.Context, repo, newRepo Repository) error { + if err := util.Rename(repoPath(repo), repoPath(newRepo)); err != nil { return fmt.Errorf("rename repository directory: %w", err) } return nil diff --git a/modules/gitrepo/hooks.go b/modules/gitrepo/hooks.go index cf44f792c6..d9d4a88ff1 100644 --- a/modules/gitrepo/hooks.go +++ b/modules/gitrepo/hooks.go @@ -106,16 +106,11 @@ done return hookNames, hookTpls, giteaHookTpls } -// CreateDelegateHooksForRepo creates all the hooks scripts for the repo -func CreateDelegateHooksForRepo(_ context.Context, repo Repository) (err error) { +// CreateDelegateHooks creates all the hooks scripts for the repo +func CreateDelegateHooks(_ context.Context, repo Repository) (err error) { return createDelegateHooks(filepath.Join(repoPath(repo), "hooks")) } -// CreateDelegateHooksForWiki creates all the hooks scripts for the wiki repo -func CreateDelegateHooksForWiki(_ context.Context, repo Repository) (err error) { - return createDelegateHooks(filepath.Join(wikiPath(repo), "hooks")) -} - func createDelegateHooks(hookDir string) (err error) { hookNames, hookTpls, giteaHookTpls := getHookTemplates() @@ -178,16 +173,11 @@ func ensureExecutable(filename string) error { return os.Chmod(filename, mode) } -// CheckDelegateHooksForRepo checks the hooks scripts for the repo -func CheckDelegateHooksForRepo(_ context.Context, repo Repository) ([]string, error) { +// CheckDelegateHooks checks the hooks scripts for the repo +func CheckDelegateHooks(_ context.Context, repo Repository) ([]string, error) { return checkDelegateHooks(filepath.Join(repoPath(repo), "hooks")) } -// CheckDelegateHooksForWiki checks the hooks scripts for the repo -func CheckDelegateHooksForWiki(_ context.Context, repo Repository) ([]string, error) { - return checkDelegateHooks(filepath.Join(wikiPath(repo), "hooks")) -} - func checkDelegateHooks(hookDir string) ([]string, error) { hookNames, hookTpls, giteaHookTpls := getHookTemplates() diff --git a/modules/repository/init.go b/modules/repository/init.go index 3fc1261baa..ace21254ba 100644 --- a/modules/repository/init.go +++ b/modules/repository/init.go @@ -138,7 +138,7 @@ func CheckInitRepository(ctx context.Context, repo *repo_model.Repository) (err // Init git bare new repository. if err = git.InitRepository(ctx, repo.RepoPath(), true, repo.ObjectFormatName); err != nil { return fmt.Errorf("git.InitRepository: %w", err) - } else if err = gitrepo.CreateDelegateHooksForRepo(ctx, repo); err != nil { + } else if err = gitrepo.CreateDelegateHooks(ctx, repo); err != nil { return fmt.Errorf("createDelegateHooks: %w", err) } return nil diff --git a/routers/api/v1/repo/wiki.go b/routers/api/v1/repo/wiki.go index 8d73383f76..67dd6c913d 100644 --- a/routers/api/v1/repo/wiki.go +++ b/routers/api/v1/repo/wiki.go @@ -476,7 +476,7 @@ func findEntryForFile(commit *git.Commit, target string) (*git.TreeEntry, error) // findWikiRepoCommit opens the wiki repo and returns the latest commit, writing to context on error. // The caller is responsible for closing the returned repo again func findWikiRepoCommit(ctx *context.APIContext) (*git.Repository, *git.Commit) { - wikiRepo, err := gitrepo.OpenWikiRepository(ctx, ctx.Repo.Repository) + wikiRepo, err := gitrepo.OpenRepository(ctx, ctx.Repo.Repository.WikiStorageRepo()) if err != nil { if git.IsErrNotExist(err) || err.Error() == "no such file or directory" { ctx.APIErrorNotFound(err) diff --git a/routers/web/repo/commit.go b/routers/web/repo/commit.go index bbdcf9875e..3fd1eacb58 100644 --- a/routers/web/repo/commit.go +++ b/routers/web/repo/commit.go @@ -284,7 +284,7 @@ func Diff(ctx *context.Context) { ) if ctx.Data["PageIsWiki"] != nil { - gitRepo, err = gitrepo.OpenWikiRepository(ctx, ctx.Repo.Repository) + gitRepo, err = gitrepo.OpenRepository(ctx, ctx.Repo.Repository.WikiStorageRepo()) if err != nil { ctx.ServerError("Repo.GitRepo.GetCommit", err) return @@ -417,7 +417,7 @@ func Diff(ctx *context.Context) { func RawDiff(ctx *context.Context) { var gitRepo *git.Repository if ctx.Data["PageIsWiki"] != nil { - wikiRepo, err := gitrepo.OpenWikiRepository(ctx, ctx.Repo.Repository) + wikiRepo, err := gitrepo.OpenRepository(ctx, ctx.Repo.Repository.WikiStorageRepo()) if err != nil { ctx.ServerError("OpenRepository", err) return diff --git a/routers/web/repo/compare.go b/routers/web/repo/compare.go index 6cea95e387..3e9cdb5df8 100644 --- a/routers/web/repo/compare.go +++ b/routers/web/repo/compare.go @@ -885,7 +885,7 @@ func ExcerptBlob(ctx *context.Context) { gitRepo := ctx.Repo.GitRepo if ctx.Data["PageIsWiki"] == true { var err error - gitRepo, err = gitrepo.OpenWikiRepository(ctx, ctx.Repo.Repository) + gitRepo, err = gitrepo.OpenRepository(ctx, ctx.Repo.Repository.WikiStorageRepo()) if err != nil { ctx.ServerError("OpenRepository", err) return diff --git a/routers/web/repo/wiki.go b/routers/web/repo/wiki.go index 0f8e1223c6..20c8c2b406 100644 --- a/routers/web/repo/wiki.go +++ b/routers/web/repo/wiki.go @@ -96,7 +96,7 @@ func findEntryForFile(commit *git.Commit, target string) (*git.TreeEntry, error) } func findWikiRepoCommit(ctx *context.Context) (*git.Repository, *git.Commit, error) { - wikiGitRepo, errGitRepo := gitrepo.OpenWikiRepository(ctx, ctx.Repo.Repository) + wikiGitRepo, errGitRepo := gitrepo.OpenRepository(ctx, ctx.Repo.Repository.WikiStorageRepo()) if errGitRepo != nil { ctx.ServerError("OpenRepository", errGitRepo) return nil, nil, errGitRepo @@ -105,7 +105,7 @@ func findWikiRepoCommit(ctx *context.Context) (*git.Repository, *git.Commit, err commit, errCommit := wikiGitRepo.GetBranchCommit(ctx.Repo.Repository.DefaultWikiBranch) if git.IsErrNotExist(errCommit) { // if the default branch recorded in database is out of sync, then re-sync it - gitRepoDefaultBranch, errBranch := gitrepo.GetWikiDefaultBranch(ctx, ctx.Repo.Repository) + gitRepoDefaultBranch, errBranch := gitrepo.GetDefaultBranch(ctx, ctx.Repo.Repository.WikiStorageRepo()) if errBranch != nil { return wikiGitRepo, nil, errBranch } diff --git a/routers/web/repo/wiki_test.go b/routers/web/repo/wiki_test.go index 99114c93e0..e44cf46ba8 100644 --- a/routers/web/repo/wiki_test.go +++ b/routers/web/repo/wiki_test.go @@ -29,7 +29,7 @@ const ( ) func wikiEntry(t *testing.T, repo *repo_model.Repository, wikiName wiki_service.WebPath) *git.TreeEntry { - wikiRepo, err := gitrepo.OpenWikiRepository(git.DefaultContext, repo) + wikiRepo, err := gitrepo.OpenRepository(git.DefaultContext, repo.WikiStorageRepo()) assert.NoError(t, err) defer wikiRepo.Close() commit, err := wikiRepo.GetBranchCommit("master") diff --git a/services/asymkey/sign.go b/services/asymkey/sign.go index da265dec27..2216bca54a 100644 --- a/services/asymkey/sign.go +++ b/services/asymkey/sign.go @@ -204,7 +204,7 @@ Loop: return false, "", nil, &ErrWontSign{twofa} } case parentSigned: - gitRepo, err := gitrepo.OpenWikiRepository(ctx, repo) + gitRepo, err := gitrepo.OpenRepository(ctx, repo.WikiStorageRepo()) if err != nil { return false, "", nil, err } diff --git a/services/doctor/misc.go b/services/doctor/misc.go index 260a28ec4c..d934640af5 100644 --- a/services/doctor/misc.go +++ b/services/doctor/misc.go @@ -49,14 +49,14 @@ func checkScriptType(ctx context.Context, logger log.Logger, autofix bool) error func checkHooks(ctx context.Context, logger log.Logger, autofix bool) error { if err := iterateRepositories(ctx, func(repo *repo_model.Repository) error { - results, err := gitrepo.CheckDelegateHooksForRepo(ctx, repo) + results, err := gitrepo.CheckDelegateHooks(ctx, repo) if err != nil { logger.Critical("Unable to check delegate hooks for repo %-v. ERROR: %v", repo, err) return fmt.Errorf("Unable to check delegate hooks for repo %-v. ERROR: %w", repo, err) } if len(results) > 0 && autofix { logger.Warn("Regenerated hooks for %s", repo.FullName()) - if err := gitrepo.CreateDelegateHooksForRepo(ctx, repo); err != nil { + if err := gitrepo.CreateDelegateHooks(ctx, repo); err != nil { logger.Critical("Unable to recreate delegate hooks for %-v. ERROR: %v", repo, err) return fmt.Errorf("Unable to recreate delegate hooks for %-v. ERROR: %w", repo, err) } diff --git a/services/mirror/mirror_push.go b/services/mirror/mirror_push.go index 6e72876893..9b57427d98 100644 --- a/services/mirror/mirror_push.go +++ b/services/mirror/mirror_push.go @@ -143,7 +143,7 @@ func runPushSync(ctx context.Context, m *repo_model.PushMirror) error { var gitRepo *git.Repository if isWiki { - gitRepo, err = gitrepo.OpenWikiRepository(ctx, repo) + gitRepo, err = gitrepo.OpenRepository(ctx, repo.WikiStorageRepo()) } else { gitRepo, err = gitrepo.OpenRepository(ctx, repo) } diff --git a/services/repository/adopt.go b/services/repository/adopt.go index ea4f9a1920..b7321156d9 100644 --- a/services/repository/adopt.go +++ b/services/repository/adopt.go @@ -115,7 +115,7 @@ func adoptRepository(ctx context.Context, repo *repo_model.Repository, defaultBr return fmt.Errorf("adoptRepository: path does not already exist: %s", repo.FullName()) } - if err := gitrepo.CreateDelegateHooksForRepo(ctx, repo); err != nil { + if err := gitrepo.CreateDelegateHooks(ctx, repo); err != nil { return fmt.Errorf("createDelegateHooks: %w", err) } diff --git a/services/repository/fork.go b/services/repository/fork.go index 7f7364acfc..5b1ba7a418 100644 --- a/services/repository/fork.go +++ b/services/repository/fork.go @@ -170,7 +170,7 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork return fmt.Errorf("git update-server-info: %w", err) } - if err = gitrepo.CreateDelegateHooksForRepo(ctx, repo); err != nil { + if err = gitrepo.CreateDelegateHooks(ctx, repo); err != nil { return fmt.Errorf("createDelegateHooks: %w", err) } diff --git a/services/repository/hooks.go b/services/repository/hooks.go index 2b3eb79153..c13b272550 100644 --- a/services/repository/hooks.go +++ b/services/repository/hooks.go @@ -31,11 +31,11 @@ func SyncRepositoryHooks(ctx context.Context) error { default: } - if err := gitrepo.CreateDelegateHooksForRepo(ctx, repo); err != nil { + if err := gitrepo.CreateDelegateHooks(ctx, repo); err != nil { return fmt.Errorf("SyncRepositoryHook: %w", err) } if repo.HasWiki() { - if err := gitrepo.CreateDelegateHooksForWiki(ctx, repo); err != nil { + if err := gitrepo.CreateDelegateHooks(ctx, repo.WikiStorageRepo()); err != nil { return fmt.Errorf("SyncRepositoryHook: %w", err) } } diff --git a/services/repository/migrate.go b/services/repository/migrate.go index 1969b16a2d..5b6feccb8d 100644 --- a/services/repository/migrate.go +++ b/services/repository/migrate.go @@ -265,11 +265,11 @@ func cleanUpMigrateGitConfig(ctx context.Context, repoPath string) error { // CleanUpMigrateInfo finishes migrating repository and/or wiki with things that don't need to be done for mirrors. func CleanUpMigrateInfo(ctx context.Context, repo *repo_model.Repository) (*repo_model.Repository, error) { - if err := gitrepo.CreateDelegateHooksForRepo(ctx, repo); err != nil { + if err := gitrepo.CreateDelegateHooks(ctx, repo); err != nil { return repo, fmt.Errorf("createDelegateHooks: %w", err) } if repo.HasWiki() { - if err := gitrepo.CreateDelegateHooksForWiki(ctx, repo); err != nil { + if err := gitrepo.CreateDelegateHooks(ctx, repo.WikiStorageRepo()); err != nil { return repo, fmt.Errorf("createDelegateHooks.(wiki): %w", err) } } diff --git a/services/repository/transfer.go b/services/repository/transfer.go index 3940b2a142..a589bc469d 100644 --- a/services/repository/transfer.go +++ b/services/repository/transfer.go @@ -331,12 +331,13 @@ func changeRepositoryName(ctx context.Context, repo *repo_model.Repository, newR return fmt.Errorf("IsRepositoryExist: %w", err) } else if has { return repo_model.ErrRepoAlreadyExist{ - Uname: repo.Owner.Name, + Uname: repo.OwnerName, Name: newRepoName, } } - if err = gitrepo.RenameRepository(ctx, repo, newRepoName); err != nil { + if err = gitrepo.RenameRepository(ctx, repo, + repo_model.StorageRepo(repo_model.RelativePath(repo.OwnerName, newRepoName))); err != nil { return fmt.Errorf("rename repository directory: %w", err) } diff --git a/services/wiki/wiki.go b/services/wiki/wiki.go index a3fe07927d..b21f46639d 100644 --- a/services/wiki/wiki.go +++ b/services/wiki/wiki.go @@ -41,7 +41,7 @@ func InitWiki(ctx context.Context, repo *repo_model.Repository) error { if err := git.InitRepository(ctx, repo.WikiPath(), true, repo.ObjectFormatName); err != nil { return fmt.Errorf("InitRepository: %w", err) - } else if err = gitrepo.CreateDelegateHooksForWiki(ctx, repo); err != nil { + } else if err = gitrepo.CreateDelegateHooks(ctx, repo.WikiStorageRepo()); err != nil { return fmt.Errorf("createDelegateHooks: %w", err) } else if _, _, err = git.NewCommand("symbolic-ref", "HEAD").AddDynamicArguments(git.BranchPrefix+repo.DefaultWikiBranch).RunStdString(ctx, &git.RunOpts{Dir: repo.WikiPath()}); err != nil { return fmt.Errorf("unable to set default wiki branch to %q: %w", repo.DefaultWikiBranch, err) @@ -100,7 +100,7 @@ func updateWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model return fmt.Errorf("InitWiki: %w", err) } - hasDefaultBranch := gitrepo.IsWikiBranchExist(ctx, repo, repo.DefaultWikiBranch) + hasDefaultBranch := gitrepo.IsBranchExist(ctx, repo.WikiStorageRepo(), repo.DefaultWikiBranch) basePath, err := repo_module.CreateTemporaryPath("update-wiki") if err != nil { @@ -381,7 +381,7 @@ func ChangeDefaultWikiBranch(ctx context.Context, repo *repo_model.Repository, n return nil } - oldDefBranch, err := gitrepo.GetWikiDefaultBranch(ctx, repo) + oldDefBranch, err := gitrepo.GetDefaultBranch(ctx, repo.WikiStorageRepo()) if err != nil { return fmt.Errorf("unable to get default branch: %w", err) } @@ -389,7 +389,7 @@ func ChangeDefaultWikiBranch(ctx context.Context, repo *repo_model.Repository, n return nil } - gitRepo, err := gitrepo.OpenWikiRepository(ctx, repo) + gitRepo, err := gitrepo.OpenRepository(ctx, repo.WikiStorageRepo()) if errors.Is(err, util.ErrNotExist) { return nil // no git repo on storage, no need to do anything else } else if err != nil { diff --git a/services/wiki/wiki_test.go b/services/wiki/wiki_test.go index e8b89f5e97..288d258279 100644 --- a/services/wiki/wiki_test.go +++ b/services/wiki/wiki_test.go @@ -166,7 +166,7 @@ func TestRepository_AddWikiPage(t *testing.T) { webPath := UserTitleToWebPath("", userTitle) assert.NoError(t, AddWikiPage(git.DefaultContext, doer, repo, webPath, wikiContent, commitMsg)) // Now need to show that the page has been added: - gitRepo, err := gitrepo.OpenWikiRepository(git.DefaultContext, repo) + gitRepo, err := gitrepo.OpenRepository(git.DefaultContext, repo.WikiStorageRepo()) require.NoError(t, err) defer gitRepo.Close() @@ -213,7 +213,7 @@ func TestRepository_EditWikiPage(t *testing.T) { assert.NoError(t, EditWikiPage(git.DefaultContext, doer, repo, "Home", webPath, newWikiContent, commitMsg)) // Now need to show that the page has been added: - gitRepo, err := gitrepo.OpenWikiRepository(git.DefaultContext, repo) + gitRepo, err := gitrepo.OpenRepository(git.DefaultContext, repo.WikiStorageRepo()) assert.NoError(t, err) masterTree, err := gitRepo.GetTree(repo.DefaultWikiBranch) assert.NoError(t, err) @@ -237,7 +237,7 @@ func TestRepository_DeleteWikiPage(t *testing.T) { assert.NoError(t, DeleteWikiPage(git.DefaultContext, doer, repo, "Home")) // Now need to show that the page has been added: - gitRepo, err := gitrepo.OpenWikiRepository(git.DefaultContext, repo) + gitRepo, err := gitrepo.OpenRepository(git.DefaultContext, repo.WikiStorageRepo()) require.NoError(t, err) defer gitRepo.Close() @@ -251,7 +251,7 @@ func TestRepository_DeleteWikiPage(t *testing.T) { func TestPrepareWikiFileName(t *testing.T) { unittest.PrepareTestEnv(t) repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) - gitRepo, err := gitrepo.OpenWikiRepository(git.DefaultContext, repo) + gitRepo, err := gitrepo.OpenRepository(git.DefaultContext, repo.WikiStorageRepo()) require.NoError(t, err) defer gitRepo.Close()