diff --git a/.air.toml b/.air.toml index de97bd8b298be..3740c4d4aa391 100644 --- a/.air.toml +++ b/.air.toml @@ -2,9 +2,10 @@ root = "." tmp_dir = ".air" [build] +pre_cmd = ["killall -9 gitea 2>/dev/null || true"] # kill off potential zombie processes from previous runs cmd = "make --no-print-directory backend" bin = "gitea" -delay = 1000 +delay = 2000 include_ext = ["go", "tmpl"] include_file = ["main.go"] include_dir = ["cmd", "models", "modules", "options", "routers", "services"] diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini index 0edd6c5dd706d..74ff775cc8ea6 100644 --- a/options/locale/locale_ja-JP.ini +++ b/options/locale/locale_ja-JP.ini @@ -25,6 +25,7 @@ enable_javascript=このウェブサイトにはJavaScriptが必要です。 toc=目次 licenses=ライセンス return_to_gitea=Giteaに戻る +more_items=その他の項目 username=ユーザー名 email=メールアドレス @@ -1003,6 +1004,7 @@ fork_visibility_helper=フォークしたリポジトリの公開/非公開は fork_branch=フォークにクローンされるブランチ all_branches=すべてのブランチ fork_no_valid_owners=このリポジトリには有効なオーナーがいないため、フォークできません。 +fork.blocked_user=リポジトリのオーナーがあなたをブロックしているため、リポジトリをフォークできません。 use_template=このテンプレートを使用 open_with_editor=%s で開く download_zip=ZIPファイルをダウンロード @@ -1179,6 +1181,7 @@ watch=ウォッチ unstar=スター取消 star=スター fork=フォーク +action.blocked_user=リポジトリのオーナーがあなたをブロックしているため、アクションを実行できません。 download_archive=リポジトリをダウンロード more_operations=その他の操作 @@ -1427,6 +1430,8 @@ issues.new.assignees=担当者 issues.new.clear_assignees=担当者をクリア issues.new.no_assignees=担当者なし issues.new.no_reviewers=レビューアなし +issues.new.blocked_user=リポジトリのオーナーがあなたをブロックしているため、イシューを作成できません。 +issues.edit.blocked_user=投稿者またはリポジトリのオーナーがあなたをブロックしているため、内容を編集できません。 issues.choose.get_started=始める issues.choose.open_external_link=オープン issues.choose.blank=デフォルト @@ -1541,6 +1546,7 @@ issues.close_comment_issue=コメントしてクローズ issues.reopen_issue=再オープンする issues.reopen_comment_issue=コメントして再オープン issues.create_comment=コメントする +issues.comment.blocked_user=投稿者またはリポジトリのオーナーがあなたをブロックしているため、コメントの作成や編集はできません。 issues.closed_at=`がイシューをクローズ %[2]s` issues.reopened_at=`がイシューを再オープン %[2]s` issues.commit_ref_at=`がコミットでこのイシューを参照 %[2]s` @@ -1739,6 +1745,7 @@ compare.compare_head=比較 pulls.desc=プルリクエストとコードレビューの有効化。 pulls.new=新しいプルリクエスト +pulls.new.blocked_user=リポジトリのオーナーがあなたをブロックしているため、プルリクエストを作成できません。 pulls.view=プルリクエストを表示 pulls.compare_changes=新規プルリクエスト pulls.allow_edits_from_maintainers=メンテナーからの編集を許可する @@ -1960,6 +1967,7 @@ wiki.original_git_entry_tooltip=フレンドリーリンクを使用する代わ activity=アクティビティ activity.navbar.pulse=Pulse +activity.navbar.code_frequency=コード更新頻度 activity.navbar.contributors=貢献者 activity.navbar.recent_commits=最近のコミット activity.period.filter_label=期間: @@ -2080,6 +2088,8 @@ settings.branches.add_new_rule=新しいルールを追加 settings.advanced_settings=拡張設定 settings.wiki_desc=Wikiを有効にする settings.use_internal_wiki=ビルトインのWikiを使用する +settings.default_wiki_branch_name=デフォルトのWikiブランチ名 +settings.failed_to_change_default_wiki_branch=デフォルトのWikiブランチを変更できませんでした。 settings.use_external_wiki=外部のWikiを使用する settings.external_wiki_url=外部WikiのURL settings.external_wiki_url_error=外部WikiのURLが有効なURLではありません。 @@ -2110,6 +2120,9 @@ settings.pulls.default_allow_edits_from_maintainers=デフォルトでメンテ settings.releases_desc=リリースを有効にする settings.packages_desc=リポジトリパッケージレジストリを有効にする settings.projects_desc=プロジェクトを有効にする +settings.projects_mode_desc=プロジェクト モード (表示するプロジェクトの種類) +settings.projects_mode_repo=リポジトリのプロジェクトのみ +settings.projects_mode_owner=ユーザーや組織のプロジェクトのみ settings.projects_mode_all=すべてのプロジェクト settings.actions_desc=Actionsを有効にする settings.admin_settings=管理者用設定 @@ -2136,6 +2149,7 @@ settings.convert_fork_succeed=フォークを通常のリポジトリに変換 settings.transfer=オーナー移転 settings.transfer.rejected=リポジトリの移転は拒否されました。 settings.transfer.success=リポジトリの移転が成功しました。 +settings.transfer.blocked_user=新しいオーナーがあなたをブロックしているため、リポジトリを移転できません。 settings.transfer_abort=転送をキャンセル settings.transfer_abort_invalid=存在しないリポジトリの移転はキャンセルできません。 settings.transfer_abort_success=%s へのリポジトリ移転は正常にキャンセルされました。 @@ -2181,6 +2195,7 @@ settings.add_collaborator_success=共同作業者を追加しました。 settings.add_collaborator_inactive_user=アクティベートされていないユーザーを共同作業者として追加することはできません。 settings.add_collaborator_owner=共同作業者としてオーナーを追加することはできません。 settings.add_collaborator_duplicate=共同作業者として既にこのリポジトリに追加されています。 +settings.add_collaborator.blocked_user=共同作業者がリポジトリのオーナーによってブロックされているか、またはブロックしています。 settings.delete_collaborator=削除 settings.collaborator_deletion=共同作業者の削除 settings.collaborator_deletion_desc=共同作業者を削除し、このリポジトリへのアクセス権を取り消します。 続行しますか? @@ -2619,12 +2634,14 @@ find_file.no_matching=一致するファイルが見つかりません error.csv.too_large=このファイルは大きすぎるため表示できません。 error.csv.unexpected=このファイルは %d 行目の %d 文字目に予期しない文字が含まれているため表示できません。 error.csv.invalid_field_count=このファイルは %d 行目のフィールドの数が正しくないため表示できません。 +error.broken_git_hook=このリポジトリのGitフックが壊れているようです。 ドキュメントに従って修正し、その後いくつかのコミットをプッシュして状態を最新にしてください。 [graphs] component_loading=%sを読み込み中... component_loading_failed=%sを読み込めませんでした component_loading_info=少し時間がかかるかもしれません… component_failed_to_load=予期しないエラーが発生しました。 +code_frequency.what=コード更新頻度 contributors.what=実績 recent_commits.what=最近のコミット @@ -2753,6 +2770,7 @@ teams.invite.by=%s からの招待 teams.invite.description=下のボタンをクリックしてチームに参加してください。 [admin] +maintenance=メンテナンス dashboard=ダッシュボード self_check=セルフチェック identity_access=アイデンティティとアクセス @@ -2776,6 +2794,7 @@ settings=管理設定 dashboard.new_version_hint=Gitea %s が入手可能になりました。 現在実行しているのは %s です。 詳細は ブログ を確認してください。 dashboard.statistic=サマリー +dashboard.maintenance_operations=メンテナンス操作 dashboard.system_status=システム状況 dashboard.operation_name=操作の名称 dashboard.operation_switch=切り替え @@ -3282,6 +3301,7 @@ notices.op=操作 notices.delete_success=システム通知を削除しました。 self_check.no_problem_found=今のところ問題は見つかっていません。 +self_check.startup_warnings=起動時の警告: self_check.database_collation_mismatch=データベースに想定される照合順序: %s self_check.database_collation_case_insensitive=データベースは照合順序 %s を使用しており、大文字小文字を区別しません。 Giteaはその照合順序でも動作するかもしれませんが、まれに期待どおり動作しないケースがあるかもしれません。 self_check.database_inconsistent_collation_columns=データベースは照合順序 %s を使用していますが、以下のカラムはそれと一致しない照合順序を使用しており、予期せぬ問題を引き起こす可能性があります。 diff --git a/services/issue/pull.go b/services/issue/pull.go index b7b63a70246a8..4a0009e82fe8c 100644 --- a/services/issue/pull.go +++ b/services/issue/pull.go @@ -51,14 +51,14 @@ func PullRequestCodeOwnersReview(ctx context.Context, issue *issues_model.Issue, return nil, err } - if pr.HeadRepo.IsFork { - return nil, nil - } - if err := pr.LoadBaseRepo(ctx); err != nil { return nil, err } + if pr.BaseRepo.IsFork { + return nil, nil + } + repo, err := gitrepo.OpenRepository(ctx, pr.BaseRepo) if err != nil { return nil, err diff --git a/templates/repo/actions/runs_list.tmpl b/templates/repo/actions/runs_list.tmpl index ac5049cf561ba..20330b5d62eb8 100644 --- a/templates/repo/actions/runs_list.tmpl +++ b/templates/repo/actions/runs_list.tmpl @@ -1,4 +1,4 @@ -
+
{{if not .Runs}}
{{svg "octicon-no-entry" 48}} @@ -28,14 +28,14 @@
{{if .RefLink}} - {{.PrettyRef}} + {{.PrettyRef}} {{else}} - {{.PrettyRef}} + {{.PrettyRef}} {{end}} -
-
-
{{svg "octicon-calendar" 16}}{{TimeSinceUnix .Updated ctx.Locale}}
-
{{svg "octicon-stopwatch" 16}}{{.Duration}}
+
+
{{svg "octicon-calendar" 16}}{{TimeSinceUnix .Updated ctx.Locale}}
+
{{svg "octicon-stopwatch" 16}}{{.Duration}}
+
{{end}} diff --git a/templates/repo/editor/edit.tmpl b/templates/repo/editor/edit.tmpl index 46f82c47d4d5a..d52e5a047ab26 100644 --- a/templates/repo/editor/edit.tmpl +++ b/templates/repo/editor/edit.tmpl @@ -15,7 +15,7 @@ {{range $i, $v := .TreeNames}} {{if eq $i $l}} - + {{svg "octicon-info"}} {{else}} {{$v}} diff --git a/templates/repo/editor/upload.tmpl b/templates/repo/editor/upload.tmpl index 0a7c49dae3d16..572502040678a 100644 --- a/templates/repo/editor/upload.tmpl +++ b/templates/repo/editor/upload.tmpl @@ -13,7 +13,7 @@ {{range $i, $v := .TreeNames}} {{if eq $i $l}} - + {{svg "octicon-info"}} {{else}} {{$v}} diff --git a/tests/integration/pull_create_test.go b/tests/integration/pull_create_test.go index 029ea65d7190f..609bd73fd514c 100644 --- a/tests/integration/pull_create_test.go +++ b/tests/integration/pull_create_test.go @@ -4,6 +4,7 @@ package integration import ( + "fmt" "net/http" "net/http/httptest" "net/url" @@ -57,6 +58,30 @@ func testPullCreate(t *testing.T, session *TestSession, user, repo string, toSel return resp } +func testPullCreateDirectly(t *testing.T, session *TestSession, baseRepoOwner, baseRepoName, baseBranch, headRepoOwner, headRepoName, headBranch, title string) *httptest.ResponseRecorder { + headCompare := headBranch + if headRepoOwner != "" { + if headRepoName != "" { + headCompare = fmt.Sprintf("%s/%s:%s", headRepoOwner, headRepoName, headBranch) + } else { + headCompare = fmt.Sprintf("%s:%s", headRepoOwner, headBranch) + } + } + req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/compare/%s...%s", baseRepoOwner, baseRepoName, baseBranch, headCompare)) + resp := session.MakeRequest(t, req, http.StatusOK) + + // Submit the form for creating the pull + htmlDoc := NewHTMLParser(t, resp.Body) + link, exists := htmlDoc.doc.Find("form.ui.form").Attr("action") + assert.True(t, exists, "The template has changed") + req = NewRequestWithValues(t, "POST", link, map[string]string{ + "_csrf": htmlDoc.GetCSRF(), + "title": title, + }) + resp = session.MakeRequest(t, req, http.StatusOK) + return resp +} + func TestPullCreate(t *testing.T) { onGiteaRun(t, func(t *testing.T, u *url.URL) { session := loginUser(t, "user1") diff --git a/tests/integration/pull_review_test.go b/tests/integration/pull_review_test.go index 9a5877697c0ba..2d8b3cb4ab2e9 100644 --- a/tests/integration/pull_review_test.go +++ b/tests/integration/pull_review_test.go @@ -161,10 +161,18 @@ func TestPullView_CodeOwner(t *testing.T) { assert.NoError(t, err) session := loginUser(t, "user5") - testPullCreate(t, session, "user5", "test_codeowner", true, forkedRepo.DefaultBranch, "codeowner-basebranch-forked", "Test Pull Request2") + + // create a pull request on the forked repository, code reviewers should not be mentioned + testPullCreateDirectly(t, session, "user5", "test_codeowner", forkedRepo.DefaultBranch, "", "", "codeowner-basebranch-forked", "Test Pull Request on Forked Repository") pr := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{BaseRepoID: forkedRepo.ID, HeadBranch: "codeowner-basebranch-forked"}) unittest.AssertExistsIf(t, false, &issues_model.Review{IssueID: pr.IssueID, Type: issues_model.ReviewTypeRequest, ReviewerID: 8}) + + // create a pull request to base repository, code reviewers should be mentioned + testPullCreateDirectly(t, session, repo.OwnerName, repo.Name, repo.DefaultBranch, forkedRepo.OwnerName, forkedRepo.Name, "codeowner-basebranch-forked", "Test Pull Request3") + + pr = unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{BaseRepoID: repo.ID, HeadRepoID: forkedRepo.ID, HeadBranch: "codeowner-basebranch-forked"}) + unittest.AssertExistsIf(t, true, &issues_model.Review{IssueID: pr.IssueID, Type: issues_model.ReviewTypeRequest, ReviewerID: 8}) }) }) } diff --git a/web_src/css/actions.css b/web_src/css/actions.css index 1d5bea2395e5c..0ab09f537abce 100644 --- a/web_src/css/actions.css +++ b/web_src/css/actions.css @@ -44,9 +44,10 @@ } .run-list-item-right { - flex: 0 0 min(20%, 130px); + width: 130px; display: flex; flex-direction: column; + flex-shrink: 0; gap: 3px; color: var(--color-text-light); } @@ -57,3 +58,26 @@ gap: .25rem; align-items: center; } + +.run-list .flex-item-trailing { + flex-wrap: nowrap; + width: 280px; + flex: 0 0 280px; +} + +.run-list-ref { + display: inline-block !important; +} + +@media (max-width: 767.98px) { + .run-list .flex-item-trailing { + flex-direction: column; + align-items: flex-end; + width: auto; + flex-basis: auto; + } + .run-list-item-right, + .run-list-ref { + max-width: 110px; + } +} diff --git a/web_src/css/modules/button.css b/web_src/css/modules/button.css index 47f55df7fa1db..87b9ddf292d0e 100644 --- a/web_src/css/modules/button.css +++ b/web_src/css/modules/button.css @@ -249,6 +249,7 @@ .ui.red.button, .ui.red.buttons .button { + color: var(--color-white); background: var(--color-red); } @@ -283,6 +284,7 @@ .ui.green.button, .ui.green.buttons .button { + color: var(--color-white); background: var(--color-green); } diff --git a/web_src/css/modules/menu.css b/web_src/css/modules/menu.css index 2581d8fab2ae6..a392ffb5e9200 100644 --- a/web_src/css/modules/menu.css +++ b/web_src/css/modules/menu.css @@ -588,7 +588,6 @@ .ui.secondary.pointing.menu .dropdown.item:active, .ui.secondary.pointing.menu a.item:active { background-color: transparent; - border-color: var(--color-secondary); } .ui.secondary.pointing.menu .active.item { diff --git a/web_src/css/repo.css b/web_src/css/repo.css index 887789115ebbd..0f6bf482b5db5 100644 --- a/web_src/css/repo.css +++ b/web_src/css/repo.css @@ -1063,6 +1063,12 @@ td .commit-summary { margin-left: 15px; } +.repository.view.issue .comment-list .event .detail .text { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + .repository.view.issue .comment-list .event .segments { box-shadow: none; } diff --git a/web_src/js/components/RepoActionView.vue b/web_src/js/components/RepoActionView.vue index 06c42f0b35dae..16ce3fc80da4a 100644 --- a/web_src/js/components/RepoActionView.vue +++ b/web_src/js/components/RepoActionView.vue @@ -377,7 +377,7 @@ export function initRepositoryActionView() { -
@@ -386,8 +386,8 @@ export function initRepositoryActionView() { {{ run.commit.shortSHA }} {{ run.commit.localePushedBy }} {{ run.commit.pusher.displayName }} - - {{ run.commit.branch.name }} + + {{ run.commit.branch.name }} @@ -426,8 +426,8 @@ export function initRepositoryActionView() {
-
-

+
+

{{ currentJob.title }}

@@ -503,6 +503,7 @@ export function initRepositoryActionView() { display: flex; align-items: center; justify-content: space-between; + gap: 8px; } .action-info-summary-title { @@ -513,6 +514,7 @@ export function initRepositoryActionView() { font-size: 20px; margin: 0 0 0 8px; flex: 1; + overflow-wrap: anywhere; } .action-commit-summary { @@ -728,6 +730,10 @@ export function initRepositoryActionView() { font-size: 12px; } +.job-info-header-left { + flex: 1; +} + .job-step-container { max-height: 100%; border-radius: 0 0 var(--border-radius) var(--border-radius);