forgejo/services/pull
abdo e16dc2ebfd fix: apply signed-merge checks by merge style (#11403)
Fixes #6438

When a protected branch requires signed commits and no signing key is available, fast-forward-only merges should still be allowed because they do not create a new commit.

This patch applies signing checks by merge behaviour/style instead of one global gate:

- pass `mergeStyle` through `CheckPullMergeable(...)` in web/API/automerge paths
- require signing for commit-creating styles (`merge`, `rebase`, `rebase-merge`, `squash`)
- bypass signing precheck only for `fast-forward-only`
- align merge UI options with backend behaviour so signing-dependent styles are unavailable when signing cannot happen
- add Go unit tests for merge-style signing requirements
- add frontend unit coverage for the no-allowed-merge-styles guard

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/11403
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: abdo <dev@abdo.wtf>
Co-committed-by: abdo <dev@abdo.wtf>
2026-04-09 20:26:27 +02:00
..
check.go fix: apply signed-merge checks by merge style (#11403) 2026-04-09 20:26:27 +02:00
check_test.go fix: apply signed-merge checks by merge style (#11403) 2026-04-09 20:26:27 +02:00
comment.go feat: Use receive.hideRefs (#10015) 2025-11-10 14:36:15 +01:00
commit_status.go fix: correctly compute required commit status (#10747) 2026-01-12 10:53:40 +01:00
commit_status_test.go fix: correctly compute required commit status (#10747) 2026-01-12 10:53:40 +01:00
edits.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
lfs.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
main_test.go chore: move all test blank imports in a single package (#10662) 2026-01-02 05:32:32 +01:00
merge.go chore: add modernizer linter (#11936) 2026-04-02 03:29:37 +02:00
merge_ff_only.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
merge_manual.go chore: move code for manual merges into merge_manual.go (#10141) 2025-11-28 07:57:31 +01:00
merge_merge.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
merge_prepare.go fix: short-circuit to avoid rebasing (#8622) 2025-07-23 07:30:30 +02:00
merge_rebase.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
merge_squash.go fix(ui)!: remove squash merge committer trailer admin option (#11096) 2026-02-07 12:58:26 +01:00
merge_test.go fix(ui)!: remove squash merge committer trailer admin option (#11096) 2026-02-07 12:58:26 +01:00
patch.go chore: fix typos throughout the codebase (#10753) 2026-01-26 22:57:33 +01:00
patch_test.go feat: improved performances when checking for conflicts on pull requests (#7727) 2025-05-16 12:40:38 +00:00
patch_unmerged.go ci: detect and prevent empty case statements in Go code (#11593) 2026-03-10 02:50:28 +01:00
pull.go chore: fix typos throughout the codebase (#10753) 2026-01-26 22:57:33 +01:00
pull_test.go fix: correct Reviewed-on URL in merge message for subpath deployments (#11240) 2026-02-11 18:12:29 +01:00
review.go fix: pull request review comment position (#9914) 2025-10-31 16:17:23 +01:00
review_test.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
temp_repo.go chore: handle error types consistently (#9873) 2026-03-06 00:48:06 +01:00
update.go 2025-11-21 combined security patches (#10037) 2025-11-21 05:23:43 +01:00
update_rebase.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00