What is a GitLab line_code as referenced when creating a new merge request thread

别等时光非礼了梦想. 提交于 2021-02-08 15:01:59

问题


I'm trying to create a discussion note on a merge request on a certain line of a file with the GitLab api using this endpoint: https://docs.gitlab.com/ee/api/discussions.html#create-new-merge-request-thread

Part of the payload asks for a line_code

Attribute Type Required Description
position[line_range][start][line_code] string yes Line code for the start line

When I issue a POST I get a response with:

    "message": "400 (Bad request) \"Note {:line_code=>[\"can't be blank\", \"must be a valid line code\"], :position=>[\"is incomplete\"]}\" not given"

What is this line_code? Is it some kind of calculated value? The documentation is rather vague here.

When I issue a GET for all the current notes on a merge_request I can see some notes have this line_code (see below). I'm trying to figure out how to create that value for new notes.

 {
        "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": {}
    },

回答1:


That represents the line in the file you want the comment to appear on. For Merge Requests, comments can either be on the code or general discussions (though the API names seem to be backwards).

To add a general discussion comment, you can use the Notes API: https://docs.gitlab.com/ee/api/notes.html#create-new-merge-request-note. This will look like the comment here: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/52673#note_495396729

To add a comment to the changed code in a Merge Request, you can use the Discussions API here: https://docs.gitlab.com/ee/api/discussions.html#create-new-merge-request-thread. This operation has options to set the file path and line number a comment should start on, a range that a comment applies to, etc. This is an example of a comment on the code itself: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/52673/diffs#2eda52c44979de93f257b305ada778372eacba0b_6_5




回答2:


Line code is hash of the file name + underscore + old line number + underscore + new line number

The documentation is wrong. line_code is required only if you are using position.line_range which is only required for adding diff note spanning multiple lines of diff. You don't need to deal with line_code for single-line diff notes. So it is not a required parameter. You can just use position.old_line or position.new_line.



来源:https://stackoverflow.com/questions/65926187/what-is-a-gitlab-line-code-as-referenced-when-creating-a-new-merge-request-threa

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!