如何通过Gerrit REST API回复指定ID的评审消息?
解决Gerrit REST API回复评审消息的问题
1. 先明确Gerrit的两种消息类型
- 评审消息:通过
/revisions/{revision-id}/review接口发布的全局评审消息,属于整个评审流的顶层消息。 - 回复评论:针对某条评审消息的嵌套回复,Web UI点击
REPLY生成的内容,需要明确关联到原消息ID。
2. 回复指定ID评审消息的REST命令
要回复ID为75315257818648484913e5ae8a5486df3ba36093的消息,需调用change级的回复接口,而非revision的评审接口:
curl -u USERNAME:PASS -H "Content-Type: application/json" -H "Accept: application/json" \ gerrit-server.com/a/changes/If875a8dc754b911098b0746d9ac47b332bee64d1/messages/75315257818648484913e5ae8a5486df3ba36093/replies \ -X POST -d '{ "message": "这是通过REST API发送的回复" }'
调用后,回复会自动与原消息建立关联,在Gerrit UI中以嵌套形式显示。
3. 查看回复与原消息的关联关系
调用GET /changes/{change-id}/messages接口,返回的回复消息会包含in_reply_to字段,直接对应原消息的ID:
{ "id": "新的回复消息ID", "author": {"_account_id":1001115, "name":"Itzhaki", ...}, "date": "2023-10-01 11:00:00.000000000", "message": "这是通过REST API发送的回复", "in_reply_to": "75315257818648484913e5ae8a5486df3ba36093", "_revision_number": 1 }
你之前通过/revisions/current/comments获取的Web UI回复内容,是UI层自动生成了原消息的文本引用(如> Patch Set 1:\n> This is a message),但REST API的标准关联方式是通过in_reply_to字段绑定原消息ID。
4. 关键说明
- 最初调用的
/revisions/current/review接口是发布新的顶层评审消息,不会关联已有消息,所以无法实现回复效果。 - Web UI的
REPLY按钮底层就是调用了messages/{message-id}/replies接口,若想让回复在UI中显示引用格式,可手动在message字段中添加原消息的文本引用,比如:{ "message": "> Patch Set 1:\n> \n> This is a message\n\n这是通过REST API发送的回复" }
内容的提问来源于stack exchange,提问作者itzhaki
相关产品推荐
相关产品推荐

