如何发布一个问题的注释并关闭这个问题

问题描述

我发现了一个问题并通过以下方式获取了详细信息:

获取https://localhost/api/v4/projects/2779/issues/2

我可以通过以下方式向问题添加 new_comment:

POST https://localhost/api/v4/projects/2779/issues/2/notes?body=new_comment

如何通过添加评论立即关闭此问题?

我已经尝试通过以下方式关闭而不发表评论

PUT https://localhost/api/v4/projects/2779/issues/2?state_event=close" 它可以工作,但我必须先请求 POST 进行评论,然后再请求 PUT 以关闭它。

解决方法

添加评论

Issue "Closing issues automatically" section 提到:

如果提交消息或合并请求描述包含与定义的模式匹配的文本,则匹配文本中引用的所有问题都将关闭。
当提交被推送到项目的默认分支时,或者当提交或合并请求合并到其中时,就会发生这种情况。

例如,如果合并请求描述中包含 Closes #4,#6,Related to #5,则在合并 MR 时会自动关闭问题 #4#6,但不会自动关闭 #5

所以“评论”与提交或 MR(合并请求)相关,而不是对问题本身的评论。

Edit issue API 建议通过以下调用来解决问题:

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/4/issues/85?state_event=close"

这应该与您尝试过的非常相似,只是您需要带有 right scope (api) 的 PAT(个人访问令牌)。

正如 OP 发现的那样,PUT 仅在对所述问题发表评论后才有效:Create new issue note

POST /projects/:id/issues/:issue_iid/notes
,

您可以在评论末尾添加 \n/close 以在添加评论时通过单个 API 调用关闭问题。

POST https://localhost/api/v4/projects/2779/issues/2/notes?body=new_comment\n/close

这是有效的,因为 /closequick actions 之一。

相关问答

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