创建新的合并请求线程时引用的 GitLab line_code 是什么

问题描述

我正在尝试使用以下端点使用 GitLab api 在文件的特定行上创建关于合并请求的讨论笔记:https://docs.gitlab.com/ee/api/discussions.html#create-new-merge-request-thread

部分负载要求 line_code

属性 输入 必填 描述
position[line_range][start][line_code] string 起始行代码

当我发出 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","new_line": 4
                },"end": {
                    "line_code": "aceba96ffdf13ce4cd4171c0248420cc03108ef0_0_4","new_line": 4
                }
            }
        },"resolvable": true,"resolved": false,"resolved_by": null,"confidential": false,"noteable_iid": 3,"commands_changes": {}
    },

解决方法

行代码是 hash of the file name + underscore + old line number + underscore + new line number

文档有误。 line_code 仅在您使用 position.line_range 时才需要,它仅用于添加跨越多行差异的差异注释。对于单行差异注释,您不需要处理 line_code。所以它不是必需的参数。您可以只使用 position.old_lineposition.new_line

,

它代表文件中您希望注释出现的行。对于合并请求,评论可以是代码或一般性讨论(尽管 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

要向合并请求中更改的代码添加评论,您可以在此处使用 Discussions 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...