Lesstep
Forgejo・Gitea・Codeberg・マージの API・2026年10月24日に確認

Forgejo・Gitea がマージを断った理由

API でのマージ(POST /api/v1/repos/持ち主/リポジトリ名/pulls/番号/merge)が失敗すると、Forgejo と Gitea は 405 か 409 で答え、JSON の message に理由を書きます。両方のソース(routers/api/v1/repo/pull.go の MergePullRequest と、services/pull の確認)より:405 はマージを始める前に確認のどれかで止まった、409 はサーバーがマージを試みて失敗したか、見た後にブランチが動いた、です。下の文言は両方の今のソースのものです。古いサーバーでは文言が違うことがあります。

405:確認で止まった

確認はこの順に行われ、最初に引っかかったもので答えます:

プルリクがいまどうなっているかは、読んで確かめます:

curl -H "Authorization: token your-token" https://codeberg.org/api/v1/repos/OWNER/REPO/pulls/42

mergeable は、サーバーが確かめている間・競合している間・その確認でエラーが出たあと・作業中の間は false です。codeberg.org の代わりに自社のサーバーの住所を使います。代わりに merge_when_checks_succeed を付けて頼むと、チェックが通ったときのマージを予約します(201)。この頼み方は、ブランチの保護の確認では止まりません。予約が待つものと、それでも断る答えはチェックが合格したらマージの断りへ。

409:マージを試みて失敗した

ほかの確認が通った後の、message が空の 500 は、プルリクエストがまだ開いている課題やプルリクエストに依存しているという意味です。サーバーはこの理由を管理者にしか見せません。その依存先を閉じるか、依存を外します(詳しく)。

直し方

IntelliJ IDEA で Forgejo・Gitea のプルリクを見るなら

Lesstep の Pull Request Inbox for Forgejo and Gitea は、JetBrains IDE(2024.1 以降)のプラグインです。マージの前に、プルリクのマージの条件を、マージを止めているものから順に見せます。作業中か・ブランチが求める数に対する承認・変更の依頼・必須のチェック・競合・対象のブランチの新しいコミット・ブランチがあなたのアカウントにマージを許しているか、です。マージするのは、画面に出ていた先頭のコミットです。push の直後にサーバーが「Please try again later」と答えたときは、数秒のあいだ聞き直します。サーバーが断ったときは、そう言います。405 なら今はマージできないとサーバーの文を添えてマージの条件を見るように、409「head out of date」ならブランチが変わったので読み直すように、と。1.0.14 からは、ほかの 409 では、ブランチが競合しているか共通の履歴が無いこと、またはサーバーの文を伝えます。1.0.17 からは、文の無い 500 に、開いている依存先で止まっていると言います。チェックが通ったときのマージと、ブランチの更新もできます。読むのは無料、承認・コメント・マージは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。

このページは Forgejo プロジェクト・Codeberg e.V.・Gitea プロジェクト・JetBrains のいずれとも提携しておらず、推奨・承認も受けていません。Forgejo・Gitea・Codeberg はそれぞれの持ち主の名前、IntelliJ IDEA は JetBrains s.r.o. の商標です。

ほかに:Forgejo・Gitea のチェックが合格したらマージの断り(405・409・500) · Forgejo・Gitea の必須のチェック(不足・skipped・パターン) · 404「The target couldn't be found.」と「not found」 · 401「token is required」と知らないトークン · 「token does not have at least one of required scope(s)」 · Forgejo・Gitea のレビューの断り(422) · Forgejo・Gitea のブランチの更新の断り(403・409・422) · Forgejo・Gitea のプルリクが作れない(409・422・403) · Forgejo・Gitea のコメントの断り(403・422・400) · Forgejo・Gitea の検索の断り(400・422) · Forgejo・Gitea のプルリクの変更ファイル(50件ずつ・changed_files) · JetBrains の IDE で Forgejo・Gitea のプルリクを扱う · English