Forgejo・Gitea がコメントを断った理由
プルリクの会話へのコメント(POST /api/v1/repos/持ち主/リポジトリ名/issues/番号/comments に body)、差分の行へのコメント(レビューとして送る:POST …/pulls/番号/reviews に comments)、返信、会話の解決は、403・422・400 で断られることがあります。以下はすべて両方のソース(routers/api/v1/repo/issue_comment.go の CreateIssueComment、Forgejo の ReqIssueUnlockedOrCanWrite、routers/api/v1/repo/pull_review.go の CreatePullReview と返信・解決の窓口、services/pull/review.go)を 2026年10月24日に読んで確かめたものです。Forgejo は v17.0 まで、Gitea は 1.27 までのリリースの枝も見ました。
答えの意味
- 403
You cannot change a locked issue.(Forgejo 17 以降)かYou cannot comment on a locked issue.(Gitea と、17 より前の Forgejo。和訳:ロックされた会話は変えられません/コメントできません):プルリクの会話がロックされていて、あなたはリポジトリのプルリクに書き込めません。書き込める人は今までどおりコメントできます。Gitea と古い Forgejo では、サイトの管理者もできます。 - 403
user is blocked by the poster or repository owner(Forgejo)かuser is blocked(Gitea。和訳:ブロックされています):プルリクを作った人か、リポジトリの持ち主が、あなたのアカウントをブロックしています。Gitea では、リポジトリの管理者はブロックされていても止められません。 - 422
[Body]: Required(和訳:本文が要ります):コメントのbodyが空か、ありません。 - 422
a code comment may span at most 50 lines(Forgejo 16 以降。和訳:行へのコメントは50行までです):行へのコメントが、サーバーの許す行数より多くの行にかかっています。既定は50行で、サーバーの管理者がMAX_CODE_COMMENT_LINESで決めます(0 なら上限なし)。extra_lines_count must be >= 0は、範囲が負の数で送られたという意味です。 - 400
comment is not a review comment(和訳:行へのコメントではありません。Gitea 1.27 以降の返信POST …/pulls/番号/comments/ID/repliesと、Gitea 1.26 以降の解決POST …/pulls/comments/ID/resolve・unresolve):IDが会話へのコメントで、行へのコメントではないので、返信するスレッドも解決する会話もありません。ほかのプルリクのコメントへの返信は 404 です。 - 403
user should have permission to resolve comment(Gitea。和訳:解決する権限が要ります):会話を解決できるのは、プルリクを作った人、リポジトリのプルリクに書き込める人、正式なレビュアーだけです。
Forgejo のリリース(v17.0 まで)には、行へのコメントへの返信と会話の解決の窓口がありません。issue に書き込む権限が無いトークンも 403 で断られますが、そのときの答えには token does not have at least one of required scope(s) と書いてあります。足す権限の見つけ方へ。無いプルリクや見えないプルリクは 404 です。無いのか・非公開か・名前が変わったかへ。
いまどうなっているか
curl -H "Authorization: token your-token" https://codeberg.org/api/v1/repos/OWNER/REPO/issues/7
"is_locked": true なら会話はロックされています。プルリクにも、その番号でこの呼び出しが使えます。codeberg.org はあなたのサーバーの住所に置き換えてください。
直し方
- ロック:リポジトリに書き込める人に、会話のロックを外してもらうか、代わりにコメントしてもらう。
- ブロック:外せるのは、あなたをブロックしたアカウントだけです。
- 422「[Body]: Required」:
bodyに本文を入れて送る。 - 422「may span at most … lines」:かける行を減らすか、コメントを分ける。
- 400「comment is not a review comment」:会話へのコメントには、新しい会話のコメントで答える。
- 403「permission to resolve」:プルリクを作った人か、リポジトリに書き込める人に解決してもらう。
IntelliJ IDEA で Forgejo・Gitea のプルリクを見るなら
Lesstep の Pull Request Inbox for Forgejo and Gitea は、JetBrains IDE(2024.1 以降)のプラグインです。会話と差分の行にコメントし、スレッドに返信します。返信は、サーバーに Gitea の返信の窓口があればそれで、無ければサーバー自身のページと同じように同じ会話に入れます。会話の解決は Gitea の窓口で行い、Forgejo では、サーバーにその窓口が無いので、プルリクのページで解決するよう伝えます。断られたときはサーバーの文を添えて伝えます。1.0.16 からは、会話のロックやアカウントのブロックで断られたコメントは、権限のせいにせず、そう伝えます。読むのは無料、コメント・承認・マージは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
このページは Forgejo プロジェクト・Codeberg e.V.・Gitea プロジェクト・JetBrains のいずれとも提携しておらず、推奨・承認も受けていません。Forgejo・Gitea・Codeberg はそれぞれの持ち主の名前、IntelliJ IDEA は JetBrains s.r.o. の商標です。
ほかに:Forgejo・Gitea のマージの断り(405・409) · Forgejo・Gitea のレビューの断り(422) · Forgejo・Gitea のブランチの更新の断り(403・409・422) · Forgejo・Gitea のプルリクが作れない(409・422・403) · 「token does not have at least one of required scope(s)」 · 401「token is required」と知らないトークン · 404「The target couldn't be found.」と「not found」 · Forgejo・Gitea の検索の断り(400・422) · Forgejo・Gitea のプルリクの変更ファイル(50件ずつ・changed_files) · JetBrains の IDE で Forgejo・Gitea のプルリクを扱う · English