Lesstep
Bitbucket Data Center・REST API・2026年10月24日

Bitbucket Data Center の「You are attempting to modify a pull request based on out-of-date information」

「古い情報をもとにプルリクエストを変更しようとしている」という意味です。Bitbucket Data Center(旧 Bitbucket Server)はプルリクエストごとに版の番号を持ち、マージや却下などの変更は、もとにした版を名指しします。その後にプルリクエストが更新されていると、Bitbucket は、頼んだ人が見ていないものに変更を当てるかわりに、この文で断ります。権限の問題でも、マージの競合でもありません。何が変わったかを見てから、プルリクエストを読み直して同じ操作をやり直すのが普通の直し方です。

答えの形

HTTP/1.1 409 Conflict
Content-Type: application/json

{"errors": [{"message": "You are attempting to modify a pull request based on out-of-date information.",
             "exceptionName": "com.atlassian.bitbucket.pull.PullRequestOutOfDateException",
             "currentVersion": 14, "expectedVersion": 12, ...}]}

起きる場面

どうするか

  1. ブラウザーでは:プルリクエストを読み直し、何が変わったかを見てから、同じ操作をやり直します。
  2. スクリプトでは:先にプルリクエストを読み(GET /rest/api/latest/projects/{project}/repos/{repo}/pull-requests/{id})、その version を送ります。POST …/merge?version=N、…/decline と …/reopen も同じです。API の文書は、操作の前にサーバーからプルリクエストを取得し、version の値を見るように書いています。
  3. 読んだばかりの版でマージする前に、それが確かめたときのプルリクエストのままかを見てください。マージの直前に読んだ版は、プルリクエストがどう変わっていても版の確認を通ってしまいます。fromRef.latestCommit を、レビューやビルドがもとにしたコミットと比べます。
  4. 承認では、API の定義は PUT …/participants/{userSlug} の version を非推奨とし、かわりに最後にレビューしたコミットを本文で送るように書いています(lastReviewedCommit)。そのときプルリクエストが「指定した最後にレビューしたコミットより後に更新されている」と、Bitbucket は 409 で答えます。

IntelliJ IDEA で Bitbucket のプルリクエストを

Pull Request Inbox for Bitbucket は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。自分のレビューを待っているプルリクエストを IDE のツールウィンドウに並べます。Bitbucket Cloud と、ベータ版として Bitbucket Data Center 8.9 以降に対応し、Data Center には個人の HTTP アクセス トークンで、そのサーバーにだけ送ります。Data Center では、承認・却下・マージの直前にプルリクエストを読み、その版を送ります。版だけでは止まりません。1.0.28(マージ)と 1.0.29(承認)からは、ソース ブランチの最新のコミットを画面のものと比べ、開いた後に新しいコミットが入っていたら、マージも承認もせずに、それを入れて読み直します。1.0.30 からは、開いた後の push で変わったファイルへの行コメントも付けません。レビューの受け箱・差分・議論は無料、承認・コメント・マージは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。

JetBrains Marketplace で入れる

Bitbucket と Atlassian は Atlassian の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Atlassian・JetBrains のいずれとも提携しておらず、承認も受けていません。

ほかに:You are not permitted to access this resource(Data Center) · Bitbucket の差分の上限 · IntelliJ IDEA で使える Bitbucket のプルリクエストのプラグインの比較 · English