Lesstep
GitLab.com と Self-Managed・リポジトリの比較の API・2026年10月29日に確認

GitLab:比較の API が「"compare_timeout": true」を返す

2つのブランチ・タグ・コミットを GET /projects/:id/repository/compare で比べると、GitLab が "compare_timeout": true を返すことがあります。GitLab の文書では、比較がサイズの上限を超えたか時間切れになった、という意味で、diffs の配列は欠けているかもしれません(Repositories API・2026年10月29日に確認)。GitLab のソースでは、この欄は差分の一覧があふれたかどうかです。かかった時間に関係なく、そのインスタンスが1つの差分に出すより多くのファイルか行が変わっていれば true になります。

GET /api/v4/projects/:id/repository/compare?from=main&to=feature

{"commit": {...},
 "commits": [...],
 "diffs": [...],
 "compare_timeout": true,
 "compare_same_ref": false,
 "web_url": "https://gitlab.example.com/group/project/-/compare/main...feature"}

この欄の意味

API の比較の答え(lib/api/entities/compare.rb)は、compare_timeout に、返す差分の集まりの overflow? を入れています。その集まりは、インスタンスの差分の設定で作られます(app/models/commit.rb の max_diff_options)。ファイルは diff_max_files まで、変わった行は diff_max_lines までです。名前は時間切れでも、ふつうの理由は大きさです。上限より多くのファイルか行が変わった比較は、何度聞いても true を返します。

上限

Diff limits(2026年10月29日に確認)から:

GitLab Self-Managed と GitLab Dedicated では、管理者が Admin > Settings > General > Diff limits で変えられます。GitLab.com では変えられません。

比較がこれほど大きくなる理由

直す所

IntelliJ IDEA で GitLab のマージリクエストを扱うなら

Lesstep の Merge Request Inbox for GitLab は JetBrains の IDE 2024.1 以降のプラグインです。マージリクエストを前に開いた後に変わったファイルに印を付けます。そのために、前に見た head と新しい head を直接比べます。GitLab が compare_timeout に true を返すと、その push がどのファイルに触れたか分からないので、その push の「変わった」の印は出さず、そのマージリクエストの「見た」の印を消します。変わったかもしれないファイルに「見た」が残らないようにするためです。読むのは無料、承認・コメント・マージは Pro(月 US$1.50・30日の試用つき)です。

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

More: GitLab の MR の変更が欠ける(「1000+」・too_large) · GitLab の 429「Retry later」(回数の上限) · GitLab のマージの断り(405・409・422) · GitLab の MR の一覧の断り(400・404) · GitLab の 404「Project Not Found」 · JetBrains の IDE で GitLab のマージリクエストを扱う · English