如何通过GitLab API向合并请求的差异视图提交评论?
解决GitLab API评论显示在「Changes」标签页的问题
你的核心问题是position_type参数设置错误,当前使用的"position_type": "text"会让评论被归类为普通文本评论,仅显示在Overview标签。要让评论出现在Changes的差异视图中,需按以下方式调整:
1. 修改position_type为diff
将请求payload里的"position_type": "text"替换为"position_type": "diff",这是GitLab识别差异关联评论的关键标识。
2. 确保参数的完整性与准确性
针对差异评论,需保证以下参数匹配合并请求的实际变更:
base_sha:合并请求目标分支的最新提交SHAhead_sha:合并请求源分支的最新提交SHAstart_sha:单行变更可与base_sha保持一致;多行变更需填变更起始的提交SHAold_path/new_path:文件为修改状态时,需同时填写新旧路径;新增文件仅需填new_pathold_line/new_line:对应差异中的行号,修改文件需匹配变更前后的行号,新增文件仅需填new_line
3. 调整后的完整请求示例
comment_payload=$(cat <<EOF { "body": "Something interesting about this line of code", "position": { "position_type": "diff", "base_sha": "$base_sha", "start_sha": "$base_sha", "head_sha": "$head_sha", "old_path": "$component", "new_path": "$component", "old_line": $line, "new_line": $line } } EOF ) curl --silent \ --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ --header "Content-Type: application/json" \ --data "$comment_payload" \ "$GITLAB_HOST/api/v4/projects/$GITLAB_PROJECT_ID/merge_requests/$PULL_REQUEST_ID/discussions"
额外说明
- 若使用
/notes端点,同样只需设置position_type: "diff",无需手动指定type: "DiffNote",GitLab会根据position参数自动识别评论类型 - 你的GitLab 14.10.5-ee版本已稳定支持diff类型的位置参数,不存在版本兼容问题
内容的提问来源于stack exchange,提问作者Nicolas Baumann
相关产品推荐
相关产品推荐

