创建新的合并请求线程时引用的 GitLab line_code 是啥
Posted
技术标签:
【中文标题】创建新的合并请求线程时引用的 GitLab line_code 是啥【英文标题】:What is a GitLab line_code as referenced when creating a new merge request thread创建新的合并请求线程时引用的 GitLab line_code 是什么 【发布时间】:2021-05-01 16:52:42 【问题描述】:我正在尝试使用此端点使用 GitLab api 在文件的某一行上创建关于合并请求的讨论笔记:https://docs.gitlab.com/ee/api/discussions.html#create-new-merge-request-thread
部分负载要求line_code
Attribute | Type | Required | Description |
---|---|---|---|
position[line_range][start][line_code] | string | yes | Line code for the start line |
当我发布 POST 时,我会收到以下回复:
"message": "400 (Bad request) \"Note :line_code=>[\"can't be blank\", \"must be a valid line code\"], :position=>[\"is incomplete\"]\" not given"
这是什么line_code
?它是某种计算值吗?这里的文档比较模糊。
当我为 merge_request 上的所有当前笔记发出 GET 时,我可以看到一些笔记有这个line_code
(见下文)。我正在尝试弄清楚如何为新笔记创造这种价值。
"id": 89,
"type": "DiffNote",
"body": "4",
"attachment": null,
"author":
"id": 6,
"name": "brian c",
"username": "bc",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/f590a9cf57136732dd0cb5z9b1563390?s=80&d=identicon",
"web_url": "http://gitlab.mycompany.us/thisIsMe"
,
"created_at": "2021-01-11T21:46:23.861Z",
"updated_at": "2021-01-11T21:46:23.861Z",
"system": false,
"noteable_id": 21,
"noteable_type": "MergeRequest",
"position":
"base_sha": "3bf8094f0d54fc70a66698bd582f25c77243de3b",
"start_sha": "3bf8094f0d54fc70a66698bd582f25c77243de3b",
"head_sha": "a10e73cf84eae38286df56f4b58fa221d7eefc44",
"old_path": "b.txt",
"new_path": "b.txt",
"position_type": "text",
"old_line": null,
"new_line": 4,
"line_range":
"start":
"line_code": "aceba96ffdf13ce4cd4171c0248420cc03108ef0_0_4",
"type": "new",
"old_line": null,
"new_line": 4
,
"end":
"line_code": "aceba96ffdf13ce4cd4171c0248420cc03108ef0_0_4",
"type": "new",
"old_line": null,
"new_line": 4
,
"resolvable": true,
"resolved": false,
"resolved_by": null,
"confidential": false,
"noteable_iid": 3,
"commands_changes":
,
【问题讨论】:
您能否用您的用例更新您的问题,以使用 API 创建 cmets?在回答您的更新时可能会有所帮助。 【参考方案1】:行号是hash of the file name + underscore + old line number + underscore + new line number
文档有误。仅当您使用position.line_range
时才需要line_code
,这仅在添加跨越多行差异的差异注释时才需要。对于单行差异注释,您无需处理 line_code
。所以它不是必需的参数。您可以使用position.old_line
或position.new_line
。
【讨论】:
【参考方案2】:这表示文件中您希望出现注释的行。对于合并请求,cmets 可以在代码上或一般讨论中(尽管 API 名称似乎是倒退的)。
要添加一般讨论评论,您可以使用 Notes API:https://docs.gitlab.com/ee/api/notes.html#create-new-merge-request-note。这看起来像这里的评论:https://gitlab.com/gitlab-org/gitlab/-/merge_requests/52673#note_495396729
要在合并请求中为更改的代码添加注释,您可以在此处使用讨论 API:https://docs.gitlab.com/ee/api/discussions.html#create-new-merge-request-thread。此操作具有设置注释应开始的文件路径和行号、注释适用的范围等选项。这是对代码本身的注释示例:https://gitlab.com/gitlab-org/gitlab/-/merge_requests/52673/diffs#2eda52c44979de93f257b305ada778372eacba0b_6_5
【讨论】:
谢谢!我在原帖中添加了一些额外的细节。以上是关于创建新的合并请求线程时引用的 GitLab line_code 是啥的主要内容,如果未能解决你的问题,请参考以下文章