問題の背景
gitlab のマージ リクエスト インターフェイスを呼び出すと、戻り値は 406 ブランチをマージできません
問題解決のステップ
- ユーザートークンが対応する操作権限を付与していないかどうかを問い合わせます
- 保護されたブランチかどうかのクエリと一連の質問
上記 2 つの問題を確認した後、同じエラーが依然として報告されていることがわかったので、詳細な比較のためにマージ リクエストの詳細インターフェイスをリクエストし、リクエストの返された結果を一覧表示することにしました。ついに問題が見つかりました。
{
"status_code": 200,
"message": {
"id": 9652,
"iid": 4,
"project_id": 876,
"title": "333",
"state": "opened",
"created_at": "2023-07-20T17:51:55.941+08:00",
"updated_at": "2023-07-20T17:51:55.941+08:00",
"target_branch": "master",
"source_branch": "branch002",
"user_notes_count": 0,
"upvotes": 0,
"downvotes": 0,
"author": {
"id": 438,
"username": "ext.qinghua.wu2",
"name": "EXT Wu Qinghua(吴庆华)(UAES-XE/GST)",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/4055081926d7684b91ec5a9fb8a439df?s=80&d=identicon",
"web_url": "http://xe-git.uaes.com/ext.qinghua.wu2"
},
"assignees": [],
"reviewers": [],
"source_project_id": 876,
"target_project_id": 876,
"labels": [],
"draft": false,
"work_in_progress": false,
"merge_when_pipeline_succeeds": false,
"merge_status": "checking",
"sha": "a52845acb2f4ed504a3d3f193db7769b1b322ac8",
"reference": "!4",
"references": {
"short": "!4",
"relative": "!4",
"full": "test_community/lvjing0720Test03!4"
},
"web_url": "http://xe-git.uaes.com/test_community/lvjing0720Test03/-/merge_requests/4",
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0
},
"squash": false,
"task_completion_status": {
"count": 0,
"completed_count": 0
},
"has_conflicts": false,
"blocking_discussions_resolved": true,
"subscribed": true,
"changes_count": "1",
"diff_refs": {
"base_sha": "9ef8d915c2d20fdb7b0d06f0d1fe43c95445e13b",
"head_sha": "a52845acb2f4ed504a3d3f193db7769b1b322ac8",
"start_sha": "fccc7616173917873b254b2bd072d89839994acb"
},
"first_contribution": false,
"user": {
"can_merge": true
}
}
}
上記の返された結果には、merge_status というフィールドがあり、その値がcheckingとなっていることがわかります。これは、コードに競合などがないか、マージできるかどうかをgitlabがチェックしていることを意味します。現在 merge_status を見ると、Cannot_be_merged、checking、can_be_merged の 3 つの状況が表示されます。can_be_merged の場合のみ呼び出しインターフェイスを正しくマージできます。そうでない場合は、エラー 406 ブランチをマージできないか、他のエラーが報告されます。
関連参考リンク: https://gitlab.com/gitlab-org/gitlab/-/issues/196962