%[2]s
v %[3]s ze zrcadla
approve_pull_request=`schválil/a %[3]s#%[2]s`
reject_pull_request=`navrhl/a změny pro %[3]s#%[2]s`
-publish_release=`vydal/a "%[4]s" v %[3]s`
review_dismissed=`zamítl/a posouzení z %[4]s pro %[3]s#%[2]s`
review_dismissed_reason=Důvod:
create_branch=vytvořil/a větev %[3]s v %[4]s
diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini
index dd2b34a6f4..5bca84ca08 100644
--- a/options/locale/locale_de-DE.ini
+++ b/options/locale/locale_de-DE.ini
@@ -3329,7 +3329,6 @@ mirror_sync_create=neue Referenz %[3]s bei %
mirror_sync_delete=hat die Referenz des Mirrors %[2]s
in %[3]s synchronisiert und gelöscht
approve_pull_request=`hat %[3]s#%[2]s approved`
reject_pull_request=`schlug Änderungen für %[3]s#%[2]s vor`
-publish_release=`veröffentlichte Release "%[4]s" in %[3]s`
review_dismissed=`verwarf das Review von %[4]s in %[3]s#%[2]s`
review_dismissed_reason=Grund:
create_branch=legte den Branch %[3]s in %[4]s an
diff --git a/options/locale/locale_el-GR.ini b/options/locale/locale_el-GR.ini
index 9553ba2f3a..834d1d7d70 100644
--- a/options/locale/locale_el-GR.ini
+++ b/options/locale/locale_el-GR.ini
@@ -3210,7 +3210,6 @@ mirror_sync_create=συγχρονίστηκε η νέα αναφορά %[3]s από το είδωλο
approve_pull_request=`ενέκρινε το %[3]s#%[2]s`
reject_pull_request=`πρότεινε αλλαγές για το %[3]s#%[2]s`
-publish_release=`έκδωσε τη "%[4]s" στο %[3]s`
review_dismissed=`ακύρωσε την εξέταση από %[4]s for %[3]s#%[2]s`
review_dismissed_reason=Αιτία:
create_branch=δημιούργησε το κλαδο %[3]s στο %[4]s
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index ec328510e3..f9d4a9b6a6 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -3348,7 +3348,7 @@ mirror_sync_create = synced new reference %[3]s to %[3]s from mirror
approve_pull_request = `approved %[3]s#%[2]s`
reject_pull_request = `suggested changes for %[3]s#%[2]s`
-publish_release = `released "%[4]s" at %[3]s`
+publish_release = `released %[4]s at %[3]s`
review_dismissed = `dismissed review from %[4]s for %[3]s#%[2]s`
review_dismissed_reason = Reason:
create_branch = created branch %[3]s in %[4]s
@@ -3415,6 +3415,7 @@ error.unit_not_allowed = You are not allowed to access this repository section.
title = Packages
desc = Manage repository packages.
empty = There are no packages yet.
+no_metadata = No metadata.
empty.documentation = For more information on the package registry, see the documentation.
empty.repo = Did you upload a package, but it's not shown here? Go to package settings and link it to this repo.
registry.documentation = For more information on the %s registry, see the documentation.
diff --git a/options/locale/locale_es-ES.ini b/options/locale/locale_es-ES.ini
index f3e2d93e80..3894e0e85b 100644
--- a/options/locale/locale_es-ES.ini
+++ b/options/locale/locale_es-ES.ini
@@ -3193,7 +3193,6 @@ mirror_sync_create=sincronizó la nueva referencia %[3]s a <
mirror_sync_delete=sincronizada y eliminada referencia %[2]s
en %[3]s desde réplica
approve_pull_request=`aprobó %[3]s#%[2]s`
reject_pull_request=`sugirió cambios para %[3]s#%[2]s`
-publish_release=`se lanzó "%[4]s" en %[3]s`
review_dismissed=`descartó la revisión de %[4]s para %[3]s#%[2]s`
review_dismissed_reason=Motivo:
create_branch=creó rama %[3]s en %[4]s
diff --git a/options/locale/locale_fa-IR.ini b/options/locale/locale_fa-IR.ini
index 25a3361b3f..d720ecf2f8 100644
--- a/options/locale/locale_fa-IR.ini
+++ b/options/locale/locale_fa-IR.ini
@@ -2508,7 +2508,6 @@ mirror_sync_create=مرجع جدید %[3]s با %[3]s حذف شده و از قرینه همگام شده
approve_pull_request=`تأیید %[3]s#%[2]s`
reject_pull_request=`تغییرات پیشنهادی برای %[3]s#%[2]s`
-publish_release=` "%[4]s" در %[3]s منتشر شد`
review_dismissed=`بازبینی از %[4]s برای %[3]s#%[2]s رد شد`
review_dismissed_reason=دلیل:
create_branch=شاخه %[3]s در %[4]s ایجاد کرد
diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini
index b90039c003..556fab28e8 100644
--- a/options/locale/locale_fr-FR.ini
+++ b/options/locale/locale_fr-FR.ini
@@ -3249,7 +3249,6 @@ mirror_sync_create=a synchronisé la nouvelle référence %[3]s<
mirror_sync_delete=a synchronisé puis supprimé la nouvelle référence %[2]s
vers %[3]s depuis le miroir
approve_pull_request=`a approuvé %[3]s#%[2]s`
reject_pull_request=`a suggérés des changements pour %[3]s#%[2]s`
-publish_release=`a publié "%[4]s" dans %[3]s`
review_dismissed=`a révoqué l’évaluation de %[4]s dans %[3]s#%[2]s`
review_dismissed_reason=Raison :
create_branch=a créé la branche %[3]s dans %[4]s
diff --git a/options/locale/locale_it-IT.ini b/options/locale/locale_it-IT.ini
index eceda0faad..0cecc0b7f3 100644
--- a/options/locale/locale_it-IT.ini
+++ b/options/locale/locale_it-IT.ini
@@ -2707,7 +2707,6 @@ mirror_sync_create=ha sincronizzato un nuovo riferimento %[3]s
mirror_sync_delete=riferimento sincronizzato ed eliminato %[2]s
a %[3]s dal mirror
approve_pull_request=`ha approvato %[3]s#%[2]s`
reject_pull_request=`ha suggerito modifiche per %[3]s#%[2]s`
-publish_release=`ha rilasciato "%[4]s" su %[3]s`
review_dismissed=`respinta la recensione da %[4]s per %[3]s#%[2]s`
review_dismissed_reason=Motivo:
create_branch=ha creato il ramo %[3]s in %[4]s
diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini
index e33a1ae173..66dedcbb51 100644
--- a/options/locale/locale_ja-JP.ini
+++ b/options/locale/locale_ja-JP.ini
@@ -164,6 +164,8 @@ search=検索…
type_tooltip=検索タイプ
fuzzy=あいまい
fuzzy_tooltip=検索語におおよそ一致する結果も含めます
+exact=完全一致
+exact_tooltip=検索語と完全に一致する結果だけを含めます
repo_kind=リポジトリを検索...
user_kind=ユーザーを検索...
org_kind=組織を検索...
@@ -177,6 +179,8 @@ branch_kind=ブランチを検索...
commit_kind=コミットを検索...
runner_kind=ランナーを検索...
no_results=一致する結果が見つかりませんでした
+issue_kind=イシューを検索...
+pull_kind=プルリクエストを検索...
keyword_search_unavailable=キーワード検索は現在利用できません。 サイト管理者にお問い合わせください。
[aria]
@@ -432,6 +436,7 @@ oauth_signin_submit=アカウントにリンク
oauth.signin.error=認可リクエストの処理中にエラーが発生しました。このエラーが解決しない場合は、サイト管理者に問い合わせてください。
oauth.signin.error.access_denied=認可リクエストが拒否されました。
oauth.signin.error.temporarily_unavailable=認証サーバーが一時的に利用できないため、認可に失敗しました。後でもう一度やり直してください。
+oauth_callback_unable_auto_reg=自動登録が有効になっていますが、OAuth2プロバイダー %[1]s の応答はフィールド %[2]s が不足しており、自動でアカウントを作成することができません。 アカウントを作成またはリンクするか、サイト管理者に問い合わせてください。
openid_connect_submit=接続
openid_connect_title=既存のアカウントに接続
openid_connect_desc=選択したOpenID URIは未登録です。 ここで新しいアカウントと関連付けます。
@@ -759,6 +764,8 @@ manage_themes=デフォルトのテーマを選択
manage_openid=OpenIDアドレスの管理
email_desc=プライマリメールアドレスは、通知、パスワードの回復、さらにメールアドレスを隠さない場合は、WebベースのGit操作にも使用されます。
theme_desc=この設定がサイト全体のデフォルトのテーマとなります。
+theme_colorblindness_help=色覚障害テーマのサポート
+theme_colorblindness_prompt=Giteaには基本的な色覚障害サポートを含むテーマがいくつか入っていますが、それらは色定義が少ししかありません。 作業はまだ進行中です。 テーマCSSファイルにもっと多くの色を定義していくことで、さらに改善できる余地があります。
primary=プライマリー
activated=アクティベート済み
requires_activation=アクティベーションが必要
@@ -883,6 +890,7 @@ repo_and_org_access=リポジトリと組織へのアクセス
permissions_public_only=公開のみ
permissions_access_all=すべて (公開、プライベート、限定)
select_permissions=許可の選択
+permission_not_set=設定なし
permission_no_access=アクセス不可
permission_read=読み取り
permission_write=読み取りと書き込み
@@ -2093,6 +2101,7 @@ settings.advanced_settings=拡張設定
settings.wiki_desc=Wikiを有効にする
settings.use_internal_wiki=ビルトインのWikiを使用する
settings.default_wiki_branch_name=デフォルトのWikiブランチ名
+settings.default_wiki_everyone_access=サインインユーザーのデフォルトのアクセス権限:
settings.failed_to_change_default_wiki_branch=デフォルトのWikiブランチを変更できませんでした。
settings.use_external_wiki=外部のWikiを使用する
settings.external_wiki_url=外部WikiのURL
@@ -3311,6 +3320,7 @@ self_check.database_collation_case_insensitive=データベースは照合順序
self_check.database_inconsistent_collation_columns=データベースは照合順序 %s を使用していますが、以下のカラムはそれと一致しない照合順序を使用しており、予期せぬ問題を引き起こす可能性があります。
self_check.database_fix_mysql=MySQL/MariaDBユーザーの方は、"gitea doctor convert" コマンドを使用することで、照合順序の問題を修正できます。 また、"ALTER ... COLLATE ..." のSQLを手で実行しても修正することができます。
self_check.database_fix_mssql=MSSQLユーザーの方は、問題を修正するには今のところ "ALTER ... COLLATE ..." のSQLを手で実行するしかありません。
+self_check.location_origin_mismatch=現在のURL (%[1]s) は、Giteaが見ているURL (%[2]s) に一致していません。 リバースプロキシを使用している場合は、"Host" ヘッダーと "X-Forwarded-Proto" ヘッダーが正しく設定されていることを確認してください。
[action]
create_repo=がリポジトリ %s を作成しました
@@ -3338,7 +3348,7 @@ mirror_sync_create=が %[4]s の新しい参照 %[3]s の参照 %[2]s
をミラーから反映し、削除しました
approve_pull_request=`が %[3]s#%[2]s を承認しました`
reject_pull_request=`が %[3]s#%[2]sについて変更を提案しました`
-publish_release=`が %[3]s の "%[4]s" をリリースしました`
+publish_release=`が %[3]s の %[4]s をリリースしました`
review_dismissed=`が %[4]s の %[3]s#%[2]s へのレビューを棄却しました`
review_dismissed_reason=理由:
create_branch=がブランチ %[3]s を %[4]s に作成しました
@@ -3486,6 +3496,7 @@ npm.install=npm を使用してパッケージをインストールするには
npm.install2=または package.json ファイルに追加します:
npm.dependencies=依存関係
npm.dependencies.development=開発用依存関係
+npm.dependencies.bundle=バンドルされた依存関係
npm.dependencies.peer=Peer依存関係
npm.dependencies.optional=オプションの依存関係
npm.details.tag=タグ
diff --git a/options/locale/locale_lv-LV.ini b/options/locale/locale_lv-LV.ini
index 3aed4bd6c5..bdfe3f8c9f 100644
--- a/options/locale/locale_lv-LV.ini
+++ b/options/locale/locale_lv-LV.ini
@@ -111,7 +111,7 @@ preview=Priekšskatītījums
loading=Notiek ielāde…
error=Kļūda
-error404=Lapa, ko vēlaties atvērt, neeksistē vai arī Jums nav tiesības to aplūkot.
+error404=Lapa, ko tiek mēģināts atvērt, vai nu nepastāv vai arī nav tiesību to aplūkot.
go_back=Atgriezties
never=Nekad
@@ -133,10 +133,10 @@ concept_user_organization=Organizācija
show_timestamps=Rādīt laika zīmogus
show_log_seconds=Rādīt sekundes
-show_full_screen=Atvērt pilnā logā
+show_full_screen=Rādīt pilnekrānā
download_logs=Lejupielādēt žurnālus
-confirm_delete_selected=Apstiprināt, lai izdzēstu visus atlasītos vienumus?
+confirm_delete_selected=Apstiprināt visu atlasīto vienumus dzēšanu?
name=Nosaukums
value=Vērtība
@@ -651,10 +651,11 @@ cancel=Atcelt
language=Valoda
ui=Motīvs
hidden_comment_types=Attēlojot paslēpt šauds komentārus:
+hidden_comment_types_description=Komentāru veidi, kas atzīmēti, netiks rādīti problēmu lapā. Piemēram, atzīmējot "Iezīmes" netiks rādīti komentāri "{lietotājs} pievienoja/noņēma {iezīme} iezīmi".
hidden_comment_types.ref_tooltip=Komentāri, kad problēmai tiek pievienota atsauce uz citu probēmu, komentāru, …
hidden_comment_types.issue_ref_tooltip=Komentāri par lietotāja izmaiņām ar problēmas saistīto atzaru/tagu
comment_type_group_reference=Atsauces
-comment_type_group_label=Etiķetes
+comment_type_group_label=Iezīmes
comment_type_group_milestone=Atskaites punktus
comment_type_group_assignee=Atbildīgos
comment_type_group_title=Nosaukuma izmaiņas
@@ -956,8 +957,8 @@ repo_desc_helper=Ievadiet īsu aprakstu (neobligāts)
repo_lang=Valoda
repo_gitignore_helper=Izvēlieties .gitignore sagatavi.
repo_gitignore_helper_desc=Izvēlieties kādi faili netiks glabāti repozitorijā no sagatavēm biežāk lietotājām valodām. Pēc noklusējuma .gitignore iekļauj valodu kompilācijas rīku artifaktus.
-issue_labels=Problēmu etiķetes
-issue_labels_helper=Izvēlieties problēmu etiķešu kopu.
+issue_labels=Problēmu iezīmes
+issue_labels_helper=Izvēlieties problēmu iezīmju kopu.
license=Licence
license_helper=Izvēlieties licences failu.
license_helper_desc=Licence nosaka, ko citi var un ko nevar darīt ar šo kodu. Neesat pārliecintāts, kādu izvēlēties šim projektam? Aplūkojiet licences izvēle.
@@ -1030,15 +1031,15 @@ desc.internal=Iekšējs
desc.archived=Arhivēts
desc.sha256=SHA256
-template.items=Sagataves ieraksti
+template.items=Sagataves vienumi
template.git_content=Git saturs (noklusētais atzars)
template.git_hooks=Git āķi
template.git_hooks_tooltip=Pēc repozitorija izveidošanas, Jums nav tiesību mainīt Git āķus. Atzīmējiet šo tikai, ja uzticaties sagataves repozitorija saturam.
template.webhooks=Tīmekļa āķi
template.topics=Tēmas
template.avatar=Profila attēls
-template.issue_labels=Problēmu etiķetes
-template.one_item=Norādiet vismaz vienu sagataves vienību
+template.issue_labels=Problēmu iezīmes
+template.one_item=Norādiet vismaz vienu sagataves vienumu
template.invalid=Norādiet sagataves repozitoriju
archive.title=Šis repozitorijs ir arhivēts. Ir iespējams aplūkot tā failus un to konēt, bet nav iespējams iesūtīt izmaiņas, kā arī izveidot jaunas problēmas vai izmaiņu pieprasījumus.
@@ -1060,10 +1061,10 @@ migrate_options_lfs_endpoint.label=LFS galapunkts
migrate_options_lfs_endpoint.description=Migrācija mēģinās izmantot attālināto URL, lai noteiktu LFS serveri. Var norādīt arī citu galapunktu, ja repozitorija LFS dati ir izvietoti citā vietā.
migrate_options_lfs_endpoint.description.local=Iespējams norādīt arī servera ceļu.
migrate_options_lfs_endpoint.placeholder=Ja nav norādīts, galamērķis tiks atvasināts no klonēšanas URL
-migrate_items=Vienības, ko pārņemt
+migrate_items=Vienumi, ko pārņemt
migrate_items_wiki=Vikivietni
migrate_items_milestones=Atskaites punktus
-migrate_items_labels=Etiķetes
+migrate_items_labels=Iezīmes
migrate_items_issues=Problēmas
migrate_items_pullrequests=Izmaiņu pieprasījumus
migrate_items_merge_requests=Sapludināšanas pieprasījumi
@@ -1078,7 +1079,7 @@ migrate.permission_denied_blocked=Nav iespējams importēt no neatļautām adres
migrate.invalid_local_path=Nederīgs lokālais ceļš. Tas neeksistē vai nav direktorija.
migrate.invalid_lfs_endpoint=LFS galapunkts nav korekts.
migrate.failed=Migrācija neizdevās: %v
-migrate.migrate_items_options=Piekļuves pilnvara ir nepieciešams, lai migrētu papildus datus
+migrate.migrate_items_options=Piekļuves pilnvara ir nepieciešama, lai pārņemtu papildus datus
migrated_from=Migrēts no %[2]s
migrated_from_fake=Migrēts no %[1]s
migrate.migrate=Migrēt no %s
@@ -1097,7 +1098,7 @@ migrate.gitbucket.description=Migrēt datus no GitBucket instancēm.
migrate.migrating_git=Migrē git datus
migrate.migrating_topics=Migrē tēmas
migrate.migrating_milestones=Migrē atskaites punktus
-migrate.migrating_labels=Migrē etiķetes
+migrate.migrating_labels=Migrē iezīmes
migrate.migrating_releases=Migrē laidienus
migrate.migrating_issues=Migrācijas problēmas
migrate.migrating_pulls=Migrē izmaiņu pieprasījumus
@@ -1141,8 +1142,8 @@ pulls=Izmaiņu pieprasījumi
project_board=Projekti
packages=Pakotnes
actions=Darbības
-labels=Etiķetes
-org_labels_desc=Organizācijas līmeņa etiķetes var tikt izmantotas visiem repozitorijiem šajā organizācijā
+labels=Iezīmes
+org_labels_desc=Organizācijas līmeņa iezīmes var tikt izmantotas visiem repozitorijiem šajā organizācijā
org_labels_desc_manage=pārvaldīt
milestones=Atskaites punkti
@@ -1334,19 +1335,19 @@ issues.desc=Organizēt kļūdu ziņojumus, uzdevumus un atskaites punktus.
issues.filter_assignees=Filtrēt pēc atbildīgajiem
issues.filter_milestones=Filtrēt pēc atskaites punkta
issues.filter_projects=Filtrēt pēc projekta
-issues.filter_labels=Filtrēt pēc etiķetēm
+issues.filter_labels=Filtrēt pēc iezīmēm
issues.filter_reviewers=Filtrēt pēc recenzentiem
issues.new=Jauna problēma
issues.new.title_empty=Nosaukums nevar būt tukšs
-issues.new.labels=Etiķetes
-issues.new.no_label=Nav etiķešu
-issues.new.clear_labels=Noņemt etiķetes
+issues.new.labels=Iezīmes
+issues.new.no_label=Nav iezīmju
+issues.new.clear_labels=Noņemt iezīmes
issues.new.projects=Projekti
issues.new.clear_projects=Notīrīt projektus
issues.new.no_projects=Nav projektu
issues.new.open_projects=Aktīvie projekti
issues.new.closed_projects=Pabeigtie projekti
-issues.new.no_items=Nav neviena ieraksta
+issues.new.no_items=Nav vienumu
issues.new.milestone=Atskaites punkts
issues.new.no_milestone=Nav atskaites punktu
issues.new.clear_milestone=Notīrīt atskaites punktus
@@ -1365,20 +1366,20 @@ issues.choose.invalid_templates=%v ķļūdaina sagatave(s) atrastas
issues.choose.invalid_config=Problēmu konfigurācija satur kļūdas:
issues.no_ref=Nav norādīts atzars/tags
issues.create=Pieteikt problēmu
-issues.new_label=Jauna etiķete
-issues.new_label_placeholder=Etiķetes nosaukums
+issues.new_label=Jauna iezīme
+issues.new_label_placeholder=Iezīmes nosaukums
issues.new_label_desc_placeholder=Apraksts
-issues.create_label=Izveidot etiķeti
-issues.label_templates.title=Ielādēt sākotnēji noteiktu etiķešu kopu
-issues.label_templates.info=Nav izveidota neviena etiķete. Jūs varat noklikšķināt uz "Jauna etiķete" augstāk, lai to izveidotu vai izmantot zemāk piedāvātās etiķetes:
-issues.label_templates.helper=Izvēlieties etiķešu kopu
-issues.label_templates.use=Izmantot etiķešu kopu
-issues.label_templates.fail_to_load_file=Neizdevās ielādēt etiķetes sagataves failu "%s": %v
-issues.add_label=pievienoja %s etiķeti %s
-issues.add_labels=pievienoja %s etiķetes %s
-issues.remove_label=noņēma %s etiķeti %s
-issues.remove_labels=noņēma %s etiķetes %s
-issues.add_remove_labels=pievienoja %s un noņēma %s etiķetes %s
+issues.create_label=Izveidot iezīmi
+issues.label_templates.title=Ielādēt sākotnēji noteiktu iezīmju kopu
+issues.label_templates.info=Nav izveidota neviena iezīme. Nospiediet uz pogas "Jauna iezīme", lai to izveidotu vai izmantojiet zemāk piedāvātās iezīmju kopas:
+issues.label_templates.helper=Izvēlieties iezīmju kopu
+issues.label_templates.use=Izmantot iezīmju kopu
+issues.label_templates.fail_to_load_file=Neizdevās ielādēt iezīmju sagataves failu "%s": %v
+issues.add_label=pievienoja %s iezīmi %s
+issues.add_labels=pievienoja %s iezīmes %s
+issues.remove_label=noņēma %s iezīmi %s
+issues.remove_labels=noņēma %s iezīmes %s
+issues.add_remove_labels=pievienoja %s un noņēma %s iezīmes %s
issues.add_milestone_at=`pievienoja atskaites punktu %s %s`
issues.add_project_at=`pievienoja šo problēmu %s projektam %s`
issues.change_milestone_at=`nomainīja atskaites punktu no %s uz %s %s`
@@ -1396,9 +1397,9 @@ issues.change_ref_at=`nomainīta atsauce no alt
+ peles klikšķis vai enter
, lai neiekļautu etiķeti`
-issues.filter_label_no_select=Visas etiķetes
+issues.filter_label=Iezīme
+issues.filter_label_exclude=`Izmantojiet alt
+ peles klikšķis vai enter
, lai neiekļautu iezīmes`
+issues.filter_label_no_select=Visas iezīmes
issues.filter_label_select_no_label=Nav etiķetes
issues.filter_milestone=Atskaites punkts
issues.filter_milestone_all=Visi atskaites punkti
@@ -1435,13 +1436,13 @@ issues.filter_sort.mostforks=Visvairāk atdalītie
issues.filter_sort.fewestforks=Vismazāk atdalītie
issues.action_open=Atvērt
issues.action_close=Aizvērt
-issues.action_label=Etiķete
+issues.action_label=Iezīme
issues.action_milestone=Atskaites punkts
issues.action_milestone_no_select=Nav atskaites punkta
issues.action_assignee=Atbildīgais
issues.action_assignee_no_select=Nav atbildīgā
issues.action_check=Atzīmēt/Notīrīt
-issues.action_check_all=Atzīmēt/Notīrīt visus ierakstus
+issues.action_check_all=Atzīmēt/notīrīt visus vienumus
issues.opened_by=%[3]s atvēra %[1]s
pulls.merged_by=%[3]s sapludināja %[1]s
pulls.merged_by_fake=%[2]s sapludināja %[1]s
@@ -1502,23 +1503,23 @@ issues.sign_in_require_desc=Nepieciešams pieteikties, lai piev
issues.edit=Labot
issues.cancel=Atcelt
issues.save=Saglabāt
-issues.label_title=Etiķetes nosaukums
-issues.label_description=Etiķetes apraksts
-issues.label_color=Etiķetes krāsa
-issues.label_exclusive=Ekskluzīvs
+issues.label_title=Nosaukums
+issues.label_description=Apraksts
+issues.label_color=Krāsa
+issues.label_exclusive=Sevišķa
issues.label_archive=Arhīvēt etiķeti
issues.label_archived_filter=Rādīt arhivētās etiķetes
issues.label_archive_tooltip=Arhivētās etiķetes pēc noklusējuma netiek iekļautas ieteikumos, kad meklē pēc nosaukuma.
-issues.label_exclusive_desc=Nosauciet etiķeti grupa/nosaukums
, lai grupētu etiķētes un varētu norādīt tās kā ekskluzīvas ar citām grupa/
etiķetēm.
-issues.label_exclusive_warning=Jebkura konfliktējoša ekskluzīvas grupas etiķete tiks noņemta, labojot pieteikumu vai izmaiņu pietikumu etiķetes.
-issues.label_count=%d etiķetes
+issues.label_exclusive_desc=Nosauciet iezīmi grupa/nosaukums
, lai tās grupētu un varētu padarīt kā savstarpēji sevišķas ar citām grupa/
iezīmēm.
+issues.label_exclusive_warning=Jebkura konfliktējoša savstarpēji sevišķas grupas iezīme tiks noņemta, labojot problēmas vai izmaiņu pietikuma iezīmes.
+issues.label_count=%d iezīmes
issues.label_open_issues=%d atvērtas problēmas
issues.label_edit=Labot
issues.label_delete=Dzēst
-issues.label_modify=Labot etiķeti
+issues.label_modify=Labot iezīmi
issues.label_deletion=Dzēst etiķeti
-issues.label_deletion_desc=Dzēšot etiķeti, tā tiks noņemta no visām problēmām un izmaiņu pieprasījumiem. Vai turpināt?
-issues.label_deletion_success=Etiķete tika izdzēsta.
+issues.label_deletion_desc=Dzēšot iezīmi, tā tiks noņemta no visām problēmām un izmaiņu pieprasījumiem. Vai turpināt?
+issues.label_deletion_success=Iezīme tika izdzēsta.
issues.label.filter_sort.alphabetically=Alfabētiski
issues.label.filter_sort.reverse_alphabetically=Pretēji alfabētiski
issues.label.filter_sort.by_size=Mazākais izmērs
@@ -1676,7 +1677,7 @@ pulls.allow_edits_from_maintainers_err=Atjaunošana neizdevās
pulls.compare_changes_desc=Izvēlieties atzaru, kurā sapludināt izmaiņas un atzaru, no kura tās saņemt.
pulls.has_viewed_file=Skatīts
pulls.has_changed_since_last_review=Mainīts kopš pēdējās recenzijas
-pulls.viewed_files_label=%[1]d no %[2]d failiem apskatīts
+pulls.viewed_files_label=apskatīts %[1]d no %[2]d failiem
pulls.expand_files=Izvērst visus failus
pulls.collapse_files=Savērst visus failus
pulls.compare_base=pamata
@@ -1886,7 +1887,7 @@ wiki.page_name_desc=Ievadiet vikivietnes lapas nosaukumu. Speciālie nosaukumi i
wiki.original_git_entry_tooltip=Attēlot oriģinālo Git faila nosaukumu.
activity=Aktivitāte
-activity.period.filter_label=Laika periods:
+activity.period.filter_label=Laika posms:
activity.period.daily=1 diena
activity.period.halfweekly=3 dienas
activity.period.weekly=1 nedēļa
@@ -2171,8 +2172,8 @@ settings.event_issues=Problēmas
settings.event_issues_desc=Problēma atvērta, aizvērta, atkārtoti atvērta vai mainīta.
settings.event_issue_assign=Problēmas atbildīgie
settings.event_issue_assign_desc=Problēmai piešķirti vai noņemti atbildīgie.
-settings.event_issue_label=Problēmu etiķetes
-settings.event_issue_label_desc=Problēmai pievienotas vai noņemtas etiķetes.
+settings.event_issue_label=Problēmu iezīmes
+settings.event_issue_label_desc=Problēmai pievienotas vai noņemtas iezīmes.
settings.event_issue_milestone=Problēmas atskaites punkts
settings.event_issue_milestone_desc=Problēmai pievienots vai noņemts atskaites punkts.
settings.event_issue_comment=Problēmas komentārs
@@ -2182,8 +2183,8 @@ settings.event_pull_request=Izmaiņu pieprasījums
settings.event_pull_request_desc=Izmaiņu pieprasījums atvērts, aizvērts, atkārtoti atvērts vai mainīts.
settings.event_pull_request_assign=Izmaiņu pieprasījuma atbildīgie
settings.event_pull_request_assign_desc=Izmaiņu pieprasījumam piešķirti vai noņemti atbildīgie.
-settings.event_pull_request_label=Izmaiņu pieprasījuma etiķetes
-settings.event_pull_request_label_desc=Izmaiņu pieprasījumam pievienotas vai noņemtas etiķetes.
+settings.event_pull_request_label=Izmaiņu pieprasījuma iezīmes
+settings.event_pull_request_label_desc=Izmaiņu pieprasījumam tika pievienotas vai noņemtas iezīmes.
settings.event_pull_request_milestone=Izmaiņu pieprasījuma atskaites punkts
settings.event_pull_request_milestone_desc=Izmaiņu pieprasījumam pievienots vai noņemts atskaites punkts.
settings.event_pull_request_comment=Izmaiņu pieprasījuma komentārs
@@ -2598,7 +2599,7 @@ settings.delete_org_title=Dzēst organizāciju
settings.delete_org_desc=Organizācija tiks dzēsta neatgriezeniski. Vai turpināt?
settings.hooks_desc=Pievienot tīmekļa āķus, kas nostrādās visiem repozitorijiem šajā organizācijā.
-settings.labels_desc=Pievienojiet etiķetes, kas var tikt izmantotas visos šīs organizācijas repozitorijos.
+settings.labels_desc=Pievienojiet iezīmes, kas var tikt izmantotas visos šīs organizācijas repozitorijos.
members.membership_visibility=Dalībnieka redzamība:
members.public=Redzams
@@ -3217,7 +3218,6 @@ mirror_sync_create=ar spoguli sinhronizēta jauna atsauce %[3]s<
mirror_sync_delete=ar spoguli sinhronizēta un izdzēsta atsauce %[2]s
repozitorijam %[3]s
approve_pull_request=`apstiprināja izmaiņu pieprasījumu %[3]s#%[2]s`
reject_pull_request=`ieteica izmaiņas izmaiņu pieprasījumam %[3]s#%[2]s`
-publish_release=`izveidoja versiju "%[4]s" repozitorijā %[3]s`
review_dismissed=`noraidīja lietotāja %[4]s recenziju izmaiņu pieprasījumam %[3]s#%[2]s`
review_dismissed_reason=Iemesls:
create_branch=izveidoja atzaru %[3]s repozitorijā %[4]s
@@ -3337,7 +3337,7 @@ container.pull=Atgādājiet šo attēlu no komandrindas:
container.digest=Īssavilkums:
container.multi_arch=OS / arhitektūra
container.layers=Attēla slāņi
-container.labels=Etiķetes
+container.labels=Iezīmes
container.labels.key=Atslēga
container.labels.value=Vērtība
cran.registry=Iestaties šo reģistru savā Rprofile.site
failā:
diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini
index 2e23cde801..4799727d98 100644
--- a/options/locale/locale_pt-BR.ini
+++ b/options/locale/locale_pt-BR.ini
@@ -3153,7 +3153,6 @@ mirror_sync_create=sincronizou a nova referência %[3]s para
mirror_sync_delete=referência excluída e sincronizada %[2]s
em %[3]s do espelhamento
approve_pull_request=`aprovou %[3]s#%[2]s`
reject_pull_request=`sugeriu modificações para %[3]s#%[2]s`
-publish_release=`lançou a versão "%[4]s" em %[3]s`
review_dismissed=`descartou a revisão de %[4]s para %[3]s#%[2]s`
review_dismissed_reason=Motivo:
create_branch=criou o branch %[3]s em %[4]s
diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini
index 642d8915cf..f4c77e4981 100644
--- a/options/locale/locale_pt-PT.ini
+++ b/options/locale/locale_pt-PT.ini
@@ -3348,7 +3348,6 @@ mirror_sync_create=sincronizou a nova referência %[3]s para
mirror_sync_delete=sincronizou e eliminou a referência %[2]s
em %[3]s da réplica
approve_pull_request=`aprovou %[3]s#%[2]s`
reject_pull_request=`sugeriu modificações para %[3]s#%[2]s`
-publish_release=`lançou "%[4]s" em %[3]s`
review_dismissed=`descartou a revisão de %[4]s para %[3]s#%[2]s`
review_dismissed_reason=Motivo:
create_branch=criou o ramo %[3]s em %[4]s
diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini
index df6df4cf95..81b88dbd45 100644
--- a/options/locale/locale_ru-RU.ini
+++ b/options/locale/locale_ru-RU.ini
@@ -3147,7 +3147,6 @@ mirror_sync_create=синхронизировал(а) новую ссылку %[2]s на %[3]s из зеркала
approve_pull_request=`утвердил(а) задачу %[3]s#%[2]s`
reject_pull_request=`предложил(а) изменения для %[3]s#%[2]s`
-publish_release=`выпустил(а) "%[4]s" в %[3]s`
review_dismissed=`отклонил(а) отзыв от %[4]s для %[3]s#%[2]s`
review_dismissed_reason=Причина:
create_branch=создал(а) ветку %[3]s в %[4]s
diff --git a/options/locale/locale_si-LK.ini b/options/locale/locale_si-LK.ini
index 15bbcfebb2..cb437e5530 100644
--- a/options/locale/locale_si-LK.ini
+++ b/options/locale/locale_si-LK.ini
@@ -2465,7 +2465,6 @@ mirror_sync_create=සමමුහුර්ත නව යොමු %[3]s කැඩපතෙන්
approve_pull_request=`අනුමත %[3]s #%[2]s ගේ`
reject_pull_request=%[3]s #%[2]sසඳහා යෝජිත වෙනස්කම්
-publish_release=`නිදහස් "%[4]s" හි %[3]s`
review_dismissed_reason=හේතුව:
create_branch=නිර්මාණය කරන ලද ශාඛාව %[3]s %[4]s
watched_repo=%[2]sනැරඹීමට පටන් ගත්තා
diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini
index be89113f0d..7b57e416f7 100644
--- a/options/locale/locale_tr-TR.ini
+++ b/options/locale/locale_tr-TR.ini
@@ -3344,7 +3344,6 @@ mirror_sync_create=%[3]s yeni referansını, %[3]s adresindeki %[2]s
referansını eşitledi ve sildi
approve_pull_request=`%[3]s#%[2]s değişiklik isteğini onayladı`
reject_pull_request=`%[3]s#%[2]s için değişiklikler önerdi`
-publish_release=`%[3]s deposu için "%[4]s" sürümü yayınlandı`
review_dismissed=`%[3]s#%[2]s için %[4]s yorumunu reddetti`
review_dismissed_reason=Sebep:
create_branch=%[4]s deposunda %[3]s dalını oluşturdu
diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini
index 3e38973e02..ddd884e113 100644
--- a/options/locale/locale_uk-UA.ini
+++ b/options/locale/locale_uk-UA.ini
@@ -2517,7 +2517,6 @@ mirror_sync_create=синхронізував нове посилання %[2]s на %[3]s із дзеркала
approve_pull_request=`схвалив %[3]s#%[2]s`
reject_pull_request=`запропонував зміни до %[3]s#%[2]s`
-publish_release=`опублікував випуск "%[4]s" з %[3]s`
review_dismissed=`відхилив відгук від %[4]s для %[3]s#%[2]s`
review_dismissed_reason=Причина:
create_branch=створив гілку %[3]s в %[4]s
diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini
index c98af46d45..0e224f0061 100644
--- a/options/locale/locale_zh-CN.ini
+++ b/options/locale/locale_zh-CN.ini
@@ -3320,6 +3320,7 @@ self_check.database_collation_case_insensitive=数据库正在使用一个校验
self_check.database_inconsistent_collation_columns=数据库正在使用%s的排序规则,但是这些列使用了不匹配的排序规则。这可能会造成一些意外问题。
self_check.database_fix_mysql=对于MySQL/MariaDB用户,您可以使用“gitea doctor convert”命令来解决校验问题。 或者您也可以通过 "ALTER ... COLLATE ..." 这样的SQL 来手动解决这个问题。
self_check.database_fix_mssql=对于MSSQL用户,您现在只能通过"ALTER ... COLLATE ..."SQLs手动解决这个问题。
+self_check.location_origin_mismatch=当前 URL (%[1]s) 与 Gitea 的 URL (%[2]s) 不匹配 。 如果您正在使用反向代理,请确保设置正确的“主机”和“X-转发-原始”标题。
[action]
create_repo=创建了仓库 %s
@@ -3347,7 +3348,7 @@ mirror_sync_create=从镜像同步了引用 %[3]s 至仓库
mirror_sync_delete=从镜像同步并从 %[3]s 删除了引用 %[2]s
approve_pull_request=`批准了 %[3]s#%[2]s`
reject_pull_request=`建议变更 %[3]s#%[2]s`
-publish_release=`在 %[3]s 发布了 "%[4]s" `
+publish_release=`在 %[3]s 发布了 %[4]s `
review_dismissed=`取消了 %[4]s 对 %[3]s#%[2]s 的变更请求`
review_dismissed_reason=原因:
create_branch=于 %[4]s 创建了分支 %[3]s
diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini
index 7823426990..50c0276567 100644
--- a/options/locale/locale_zh-TW.ini
+++ b/options/locale/locale_zh-TW.ini
@@ -2932,7 +2932,6 @@ mirror_sync_create=從鏡像同步了新參考 %[3]s 到 %[3]s 刪除了參考 %[2]s
approve_pull_request=`核可了 %[3]s#%[2]s`
reject_pull_request=`提出了修改建議 %[3]s#%[2]s`
-publish_release=`發布了 %[3]s 的 "%[4]s" `
review_dismissed=`取消了 %[4]s 對 %[3]s#%[2]s 的審核`
review_dismissed_reason=原因:
create_branch=在 %[4]s 中建立了分支 %[3]s
diff --git a/poetry.lock b/poetry.lock
index 1533ddc5ec..74536495d2 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,4 +1,4 @@
-# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
[[package]]
name = "click"
@@ -318,13 +318,13 @@ files = [
[[package]]
name = "tqdm"
-version = "4.66.2"
+version = "4.66.4"
description = "Fast, Extensible Progress Meter"
optional = false
python-versions = ">=3.7"
files = [
- {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"},
- {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"},
+ {file = "tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644"},
+ {file = "tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb"},
]
[package.dependencies]
diff --git a/routers/api/packages/container/container.go b/routers/api/packages/container/container.go
index 1efd166eb3..2a6d44ba08 100644
--- a/routers/api/packages/container/container.go
+++ b/routers/api/packages/container/container.go
@@ -116,6 +116,8 @@ func apiErrorDefined(ctx *context.Context, err *namedError) {
}
func apiUnauthorizedError(ctx *context.Context) {
+ // TODO: it doesn't seem quite right but it doesn't really cause problem at the moment.
+ // container registry requires that the "/v2" must be in the root, so the sub-path in AppURL should be removed, ideally.
ctx.Resp.Header().Add("WWW-Authenticate", `Bearer realm="`+httplib.GuessCurrentAppURL(ctx)+`v2/token",service="container_registry",scope="*"`)
apiErrorDefined(ctx, errUnauthorized)
}
diff --git a/routers/api/v1/org/avatar.go b/routers/api/v1/org/avatar.go
index e34c68dfc9..f11eb6c1cd 100644
--- a/routers/api/v1/org/avatar.go
+++ b/routers/api/v1/org/avatar.go
@@ -46,6 +46,7 @@ func UpdateAvatar(ctx *context.APIContext) {
err = user_service.UploadAvatar(ctx, ctx.Org.Organization.AsUser(), content)
if err != nil {
ctx.Error(http.StatusInternalServerError, "UploadAvatar", err)
+ return
}
ctx.Status(http.StatusNoContent)
@@ -72,6 +73,7 @@ func DeleteAvatar(ctx *context.APIContext) {
err := user_service.DeleteAvatar(ctx, ctx.Org.Organization.AsUser())
if err != nil {
ctx.Error(http.StatusInternalServerError, "DeleteAvatar", err)
+ return
}
ctx.Status(http.StatusNoContent)
diff --git a/routers/api/v1/repo/migrate.go b/routers/api/v1/repo/migrate.go
index f246b08c0a..14c8c01f4e 100644
--- a/routers/api/v1/repo/migrate.go
+++ b/routers/api/v1/repo/migrate.go
@@ -175,7 +175,7 @@ func Migrate(ctx *context.APIContext) {
Description: opts.Description,
OriginalURL: form.CloneAddr,
GitServiceType: gitServiceType,
- IsPrivate: opts.Private,
+ IsPrivate: opts.Private || setting.Repository.ForcePrivate,
IsMirror: opts.Mirror,
Status: repo_model.RepositoryBeingMigrated,
})
diff --git a/routers/api/v1/repo/release.go b/routers/api/v1/repo/release.go
index f0f3c0bbc7..f92fb86f5c 100644
--- a/routers/api/v1/repo/release.go
+++ b/routers/api/v1/repo/release.go
@@ -215,6 +215,9 @@ func CreateRelease(ctx *context.APIContext) {
// "$ref": "#/responses/notFound"
// "409":
// "$ref": "#/responses/error"
+ // "422":
+ // "$ref": "#/responses/validationError"
+
form := web.GetForm(ctx).(*api.CreateReleaseOption)
if ctx.Repo.Repository.IsEmpty {
ctx.Error(http.StatusUnprocessableEntity, "RepoIsEmpty", fmt.Errorf("repo is empty"))
@@ -246,6 +249,8 @@ func CreateRelease(ctx *context.APIContext) {
if err := release_service.CreateRelease(ctx.Repo.GitRepo, rel, nil, ""); err != nil {
if repo_model.IsErrReleaseAlreadyExist(err) {
ctx.Error(http.StatusConflict, "ReleaseAlreadyExist", err)
+ } else if models.IsErrProtectedTagName(err) {
+ ctx.Error(http.StatusUnprocessableEntity, "ProtectedTagName", err)
} else {
ctx.Error(http.StatusInternalServerError, "CreateRelease", err)
}
@@ -386,8 +391,8 @@ func DeleteRelease(ctx *context.APIContext) {
// "$ref": "#/responses/empty"
// "404":
// "$ref": "#/responses/notFound"
- // "405":
- // "$ref": "#/responses/empty"
+ // "422":
+ // "$ref": "#/responses/validationError"
id := ctx.ParamsInt64(":id")
rel, err := repo_model.GetReleaseForRepoByID(ctx, ctx.Repo.Repository.ID, id)
@@ -401,7 +406,7 @@ func DeleteRelease(ctx *context.APIContext) {
}
if err := release_service.DeleteReleaseByID(ctx, ctx.Repo.Repository, rel, ctx.Doer, false); err != nil {
if models.IsErrProtectedTagName(err) {
- ctx.Error(http.StatusMethodNotAllowed, "delTag", "user not allowed to delete protected tag")
+ ctx.Error(http.StatusUnprocessableEntity, "delTag", "user not allowed to delete protected tag")
return
}
ctx.Error(http.StatusInternalServerError, "DeleteReleaseByID", err)
diff --git a/routers/api/v1/repo/release_tags.go b/routers/api/v1/repo/release_tags.go
index fec91164a2..f845fad53b 100644
--- a/routers/api/v1/repo/release_tags.go
+++ b/routers/api/v1/repo/release_tags.go
@@ -92,8 +92,8 @@ func DeleteReleaseByTag(ctx *context.APIContext) {
// "$ref": "#/responses/empty"
// "404":
// "$ref": "#/responses/notFound"
- // "405":
- // "$ref": "#/responses/empty"
+ // "422":
+ // "$ref": "#/responses/validationError"
tag := ctx.Params(":tag")
@@ -114,7 +114,7 @@ func DeleteReleaseByTag(ctx *context.APIContext) {
if err = releaseservice.DeleteReleaseByID(ctx, ctx.Repo.Repository, release, ctx.Doer, false); err != nil {
if models.IsErrProtectedTagName(err) {
- ctx.Error(http.StatusMethodNotAllowed, "delTag", "user not allowed to delete protected tag")
+ ctx.Error(http.StatusUnprocessableEntity, "delTag", "user not allowed to delete protected tag")
return
}
ctx.Error(http.StatusInternalServerError, "DeleteReleaseByID", err)
diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go
index 7f35a7fe41..594f2d86f6 100644
--- a/routers/api/v1/repo/repo.go
+++ b/routers/api/v1/repo/repo.go
@@ -252,7 +252,7 @@ func CreateUserRepo(ctx *context.APIContext, owner *user_model.User, opt api.Cre
Gitignores: opt.Gitignores,
License: opt.License,
Readme: opt.Readme,
- IsPrivate: opt.Private,
+ IsPrivate: opt.Private || setting.Repository.ForcePrivate,
AutoInit: opt.AutoInit,
DefaultBranch: opt.DefaultBranch,
TrustModel: repo_model.ToTrustModel(opt.TrustModel),
@@ -364,7 +364,7 @@ func Generate(ctx *context.APIContext) {
Name: form.Name,
DefaultBranch: form.DefaultBranch,
Description: form.Description,
- Private: form.Private,
+ Private: form.Private || setting.Repository.ForcePrivate,
GitContent: form.GitContent,
Topics: form.Topics,
GitHooks: form.GitHooks,
@@ -1062,16 +1062,10 @@ func updateRepoArchivedState(ctx *context.APIContext, opts api.EditRepoOption) e
func updateMirror(ctx *context.APIContext, opts api.EditRepoOption) error {
repo := ctx.Repo.Repository
- // only update mirror if interval or enable prune are provided
- if opts.MirrorInterval == nil && opts.EnablePrune == nil {
- return nil
- }
-
- // these values only make sense if the repo is a mirror
+ // Skip this update if the repo is not a mirror, do not return error.
+ // Because reporting errors only makes the logic more complex&fragile, it doesn't really help end users.
if !repo.IsMirror {
- err := fmt.Errorf("repo is not a mirror, can not change mirror interval")
- ctx.Error(http.StatusUnprocessableEntity, err.Error(), err)
- return err
+ return nil
}
// get the mirror from the repo
diff --git a/routers/api/v1/repo/tag.go b/routers/api/v1/repo/tag.go
index a6908f3615..8577a0e896 100644
--- a/routers/api/v1/repo/tag.go
+++ b/routers/api/v1/repo/tag.go
@@ -184,6 +184,8 @@ func CreateTag(ctx *context.APIContext) {
// "$ref": "#/responses/empty"
// "409":
// "$ref": "#/responses/conflict"
+ // "422":
+ // "$ref": "#/responses/validationError"
// "423":
// "$ref": "#/responses/repoArchivedError"
form := web.GetForm(ctx).(*api.CreateTagOption)
@@ -205,7 +207,7 @@ func CreateTag(ctx *context.APIContext) {
return
}
if models.IsErrProtectedTagName(err) {
- ctx.Error(http.StatusMethodNotAllowed, "CreateNewTag", "user not allowed to create protected tag")
+ ctx.Error(http.StatusUnprocessableEntity, "CreateNewTag", "user not allowed to create protected tag")
return
}
@@ -253,6 +255,8 @@ func DeleteTag(ctx *context.APIContext) {
// "$ref": "#/responses/empty"
// "409":
// "$ref": "#/responses/conflict"
+ // "422":
+ // "$ref": "#/responses/validationError"
// "423":
// "$ref": "#/responses/repoArchivedError"
tagName := ctx.Params("*")
@@ -274,7 +278,7 @@ func DeleteTag(ctx *context.APIContext) {
if err = releaseservice.DeleteReleaseByID(ctx, ctx.Repo.Repository, tag, ctx.Doer, true); err != nil {
if models.IsErrProtectedTagName(err) {
- ctx.Error(http.StatusMethodNotAllowed, "delTag", "user not allowed to delete protected tag")
+ ctx.Error(http.StatusUnprocessableEntity, "delTag", "user not allowed to delete protected tag")
return
}
ctx.Error(http.StatusInternalServerError, "DeleteReleaseByID", err)
diff --git a/routers/api/v1/user/avatar.go b/routers/api/v1/user/avatar.go
index f912296228..30ccb63587 100644
--- a/routers/api/v1/user/avatar.go
+++ b/routers/api/v1/user/avatar.go
@@ -39,6 +39,7 @@ func UpdateAvatar(ctx *context.APIContext) {
err = user_service.UploadAvatar(ctx, ctx.Doer, content)
if err != nil {
ctx.Error(http.StatusInternalServerError, "UploadAvatar", err)
+ return
}
ctx.Status(http.StatusNoContent)
@@ -57,6 +58,7 @@ func DeleteAvatar(ctx *context.APIContext) {
err := user_service.DeleteAvatar(ctx, ctx.Doer)
if err != nil {
ctx.Error(http.StatusInternalServerError, "DeleteAvatar", err)
+ return
}
ctx.Status(http.StatusNoContent)
diff --git a/routers/install/install.go b/routers/install/install.go
index 9c6a8849b6..fde8b37ed5 100644
--- a/routers/install/install.go
+++ b/routers/install/install.go
@@ -481,6 +481,17 @@ func SubmitInstall(ctx *context.Context) {
cfg.Section("security").Key("INTERNAL_TOKEN").SetValue(internalToken)
}
+ // FIXME: at the moment, no matter oauth2 is enabled or not, it must generate a "oauth2 JWT_SECRET"
+ // see the "loadOAuth2From" in "setting/oauth2.go"
+ if !cfg.Section("oauth2").HasKey("JWT_SECRET") && !cfg.Section("oauth2").HasKey("JWT_SECRET_URI") {
+ _, jwtSecretBase64, err := generate.NewJwtSecretWithBase64()
+ if err != nil {
+ ctx.RenderWithErr(ctx.Tr("install.secret_key_failed", err), tplInstall, &form)
+ return
+ }
+ cfg.Section("oauth2").Key("JWT_SECRET").SetValue(jwtSecretBase64)
+ }
+
// if there is already a SECRET_KEY, we should not overwrite it, otherwise the encrypted data will not be able to be decrypted
if setting.SecretKey == "" {
var secretKey string
diff --git a/routers/web/admin/admin_test.go b/routers/web/admin/admin_test.go
index 782126adf5..6c38f0b509 100644
--- a/routers/web/admin/admin_test.go
+++ b/routers/web/admin/admin_test.go
@@ -87,6 +87,6 @@ func TestSelfCheckPost(t *testing.T) {
err := json.Unmarshal(resp.Body.Bytes(), &data)
assert.NoError(t, err)
assert.Equal(t, []string{
- ctx.Locale.TrString("admin.self_check.location_origin_mismatch", "http://frontend/sub/", "http://host/sub/"),
+ ctx.Locale.TrString("admin.self_check.location_origin_mismatch", "http://frontend/sub/", "http://config/sub/"),
}, data.Problems)
}
diff --git a/routers/web/auth/oauth.go b/routers/web/auth/oauth.go
index 354e70bcbf..84fa473044 100644
--- a/routers/web/auth/oauth.go
+++ b/routers/web/auth/oauth.go
@@ -541,6 +541,16 @@ func GrantApplicationOAuth(ctx *context.Context) {
ctx.Error(http.StatusBadRequest)
return
}
+
+ if !form.Granted {
+ handleAuthorizeError(ctx, AuthorizeError{
+ State: form.State,
+ ErrorDescription: "the request is denied",
+ ErrorCode: ErrorCodeAccessDenied,
+ }, form.RedirectURI)
+ return
+ }
+
app, err := auth.GetOAuth2ApplicationByClientID(ctx, form.ClientID)
if err != nil {
ctx.ServerError("GetOAuth2ApplicationByClientID", err)
diff --git a/routers/web/repo/compare.go b/routers/web/repo/compare.go
index 8c0fee71a0..818dc4d50f 100644
--- a/routers/web/repo/compare.go
+++ b/routers/web/repo/compare.go
@@ -931,7 +931,7 @@ func ExcerptBlob(ctx *context.Context) {
}
}
ctx.Data["section"] = section
- ctx.Data["FileNameHash"] = base.EncodeSha1(filePath)
+ ctx.Data["FileNameHash"] = git.HashFilePathForWebUI(filePath)
ctx.Data["AfterCommitID"] = commitID
ctx.Data["Anchor"] = anchor
ctx.HTML(http.StatusOK, tplBlobExcerpt)
diff --git a/routers/web/repo/repo.go b/routers/web/repo/repo.go
index 48be1c2296..71c582b5f9 100644
--- a/routers/web/repo/repo.go
+++ b/routers/web/repo/repo.go
@@ -248,7 +248,7 @@ func CreatePost(ctx *context.Context) {
opts := repo_service.GenerateRepoOptions{
Name: form.RepoName,
Description: form.Description,
- Private: form.Private,
+ Private: form.Private || setting.Repository.ForcePrivate,
GitContent: form.GitContent,
Topics: form.Topics,
GitHooks: form.GitHooks,
diff --git a/services/forms/user_form.go b/services/forms/user_form.go
index 418a87b863..b4be1e02b7 100644
--- a/services/forms/user_form.go
+++ b/services/forms/user_form.go
@@ -161,6 +161,7 @@ func (f *AuthorizationForm) Validate(req *http.Request, errs binding.Errors) bin
// GrantApplicationForm form for authorizing oauth2 clients
type GrantApplicationForm struct {
ClientID string `binding:"Required"`
+ Granted bool
RedirectURI string
State string
Scope string
diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go
index 3a35d24dff..063c995d52 100644
--- a/services/gitdiff/gitdiff.go
+++ b/services/gitdiff/gitdiff.go
@@ -23,7 +23,6 @@ import (
pull_model "code.gitea.io/gitea/models/pull"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/analyze"
- "code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/charset"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/highlight"
@@ -746,7 +745,7 @@ parsingLoop:
diffLineTypeBuffers[DiffLineAdd] = new(bytes.Buffer)
diffLineTypeBuffers[DiffLineDel] = new(bytes.Buffer)
for _, f := range diff.Files {
- f.NameHash = base.EncodeSha1(f.Name)
+ f.NameHash = git.HashFilePathForWebUI(f.Name)
for _, buffer := range diffLineTypeBuffers {
buffer.Reset()
diff --git a/services/migrations/gitea_uploader.go b/services/migrations/gitea_uploader.go
index c63383f5ca..4c8e036f05 100644
--- a/services/migrations/gitea_uploader.go
+++ b/services/migrations/gitea_uploader.go
@@ -107,7 +107,7 @@ func (g *GiteaLocalUploader) CreateRepo(repo *base.Repository, opts base.Migrate
Description: repo.Description,
OriginalURL: repo.OriginalURL,
GitServiceType: opts.GitServiceType,
- IsPrivate: opts.Private,
+ IsPrivate: opts.Private || setting.Repository.ForcePrivate,
IsMirror: opts.Mirror,
Status: repo_model.RepositoryBeingMigrated,
})
diff --git a/services/release/release.go b/services/release/release.go
index ba5fd1dd98..399fdc79c0 100644
--- a/services/release/release.go
+++ b/services/release/release.go
@@ -204,7 +204,7 @@ func UpdateRelease(ctx context.Context, doer *user_model.User, gitRepo *git.Repo
if rel.ID == 0 {
return errors.New("UpdateRelease only accepts an exist release")
}
- isCreated, err := createTag(gitRepo.Ctx, gitRepo, rel, "")
+ isTagCreated, err := createTag(gitRepo.Ctx, gitRepo, rel, "")
if err != nil {
return err
}
@@ -216,6 +216,12 @@ func UpdateRelease(ctx context.Context, doer *user_model.User, gitRepo *git.Repo
}
defer committer.Close()
+ oldRelease, err := repo_model.GetReleaseByID(ctx, rel.ID)
+ if err != nil {
+ return err
+ }
+ isConvertedFromTag := oldRelease.IsTag && !rel.IsTag
+
if err = repo_model.UpdateRelease(ctx, rel); err != nil {
return err
}
@@ -292,7 +298,7 @@ func UpdateRelease(ctx context.Context, doer *user_model.User, gitRepo *git.Repo
}
if !rel.IsDraft {
- if !isCreated {
+ if !isTagCreated && !isConvertedFromTag {
notify_service.UpdateRelease(gitRepo.Ctx, doer, rel)
return nil
}
diff --git a/services/repository/repository.go b/services/repository/repository.go
index d28200c0ad..b7aac3cfe0 100644
--- a/services/repository/repository.go
+++ b/services/repository/repository.go
@@ -85,7 +85,7 @@ func PushCreateRepo(ctx context.Context, authUser, owner *user_model.User, repoN
repo, err := CreateRepository(ctx, authUser, owner, CreateRepoOptions{
Name: repoName,
- IsPrivate: setting.Repository.DefaultPushCreatePrivate,
+ IsPrivate: setting.Repository.DefaultPushCreatePrivate || setting.Repository.ForcePrivate,
})
if err != nil {
return nil, err
diff --git a/services/task/task.go b/services/task/task.go
index e15cab7b3c..c90ee91270 100644
--- a/services/task/task.go
+++ b/services/task/task.go
@@ -107,7 +107,7 @@ func CreateMigrateTask(ctx context.Context, doer, u *user_model.User, opts base.
Description: opts.Description,
OriginalURL: opts.OriginalURL,
GitServiceType: opts.GitServiceType,
- IsPrivate: opts.Private,
+ IsPrivate: opts.Private || setting.Repository.ForcePrivate,
IsMirror: opts.Mirror,
Status: repo_model.RepositoryBeingMigrated,
})
diff --git a/services/user/avatar.go b/services/user/avatar.go
index 2d6c3faf9a..3f87466eaa 100644
--- a/services/user/avatar.go
+++ b/services/user/avatar.go
@@ -5,8 +5,10 @@ package user
import (
"context"
+ "errors"
"fmt"
"io"
+ "os"
"code.gitea.io/gitea/models/db"
user_model "code.gitea.io/gitea/models/user"
@@ -48,16 +50,24 @@ func UploadAvatar(ctx context.Context, u *user_model.User, data []byte) error {
func DeleteAvatar(ctx context.Context, u *user_model.User) error {
aPath := u.CustomAvatarRelativePath()
log.Trace("DeleteAvatar[%d]: %s", u.ID, aPath)
- if len(u.Avatar) > 0 {
- if err := storage.Avatars.Delete(aPath); err != nil {
- return fmt.Errorf("Failed to remove %s: %w", aPath, err)
- }
- }
- u.UseCustomAvatar = false
- u.Avatar = ""
- if _, err := db.GetEngine(ctx).ID(u.ID).Cols("avatar, use_custom_avatar").Update(u); err != nil {
- return fmt.Errorf("DeleteAvatar: %w", err)
- }
- return nil
+ return db.WithTx(ctx, func(ctx context.Context) error {
+ hasAvatar := len(u.Avatar) > 0
+ u.UseCustomAvatar = false
+ u.Avatar = ""
+ if _, err := db.GetEngine(ctx).ID(u.ID).Cols("avatar, use_custom_avatar").Update(u); err != nil {
+ return fmt.Errorf("DeleteAvatar: %w", err)
+ }
+
+ if hasAvatar {
+ if err := storage.Avatars.Delete(aPath); err != nil {
+ if !errors.Is(err, os.ErrNotExist) {
+ return fmt.Errorf("failed to remove %s: %w", aPath, err)
+ }
+ log.Warn("Deleting avatar %s but it doesn't exist", aPath)
+ }
+ }
+
+ return nil
+ })
}
diff --git a/templates/package/content/maven.tmpl b/templates/package/content/maven.tmpl
index 3a7de335de..f56595a830 100644
--- a/templates/package/content/maven.tmpl
+++ b/templates/package/content/maven.tmpl
@@ -1,4 +1,8 @@
-{{if eq .PackageDescriptor.Package.Type "maven"}}
+{{if and (eq .PackageDescriptor.Package.Type "maven") (not .PackageDescriptor.Metadata)}}
+