如何从GitLab服务器删除合并请求

如何从GitLab服务器删除合并请求,gitlab,gitlab-omnibus,Gitlab,Gitlab Omnibus,我在gitlab(本地)服务器上创建了一个合并请求。现在,每当我单击合并请求时,请求就会超时,并出现错误500。在此之前,我经常得到一个错误代码504,并应用了中提到的更改 我只想删除合并请求。有手动的方法吗?是的,有。。。。我找不到在用户界面中删除合并请求的方法,但是您可以简单地从数据库中删除它 (请注意,我只在Ubuntu14.04.3 LTS上的gitlab CE 8.4.0-CE.0上测试了这个。其他版本可能有不同的数据库结构) 在命令提示下,以root用户身份执行以下命令: 这将启动P

我在gitlab(本地)服务器上创建了一个合并请求。现在,每当我单击合并请求时,请求就会超时,并出现错误500。在此之前,我经常得到一个错误代码504,并应用了中提到的更改


我只想删除合并请求。有手动的方法吗?

是的,有。。。。我找不到在用户界面中删除合并请求的方法,但是您可以简单地从数据库中删除它

(请注意,我只在Ubuntu14.04.3 LTS上的gitlab CE 8.4.0-CE.0上测试了这个。其他版本可能有不同的数据库结构)

在命令提示下,以root用户身份执行以下命令:

这将启动PostgreSQL命令终端。接下来,您必须找到要删除的合并请求。在PostgreSQL命令终端键入以下命令:

select id, title from merge_requests;
您将获得合并请求ID和标题的列表。找到要删除的代码,并记下
id

delete from merge_requests where id = 5;
delete from merge_request_diffs where merge_request_id = 5;
delete from notes where noteable_type = 'MergeRequest' and noteable_id = 5;
好的,假设您找到了要删除的合并请求,
id
5
。您只需使用以下SQL命令删除与该合并请求关联的所有数据。(将下面命令中的
5
替换为实际的合并请求
id

您现在可以通过键入以下内容退出PostgreSQL命令终端:

\q

您的合并请求现在应该从web界面中消失。

我不知道这是否也适用于CE,但至少EE有一个用于删除合并请求的API端点:

curl --request DELETE --header "PRIVATE-TOKEN: <private_token>" https://gitlab.example.com/api/v3/projects/4/merge_request/85
curl--request DELETE--header“PRIVATE-TOKEN:https://gitlab.example.com/api/v3/projects/4/merge_request/85

转到目标存储库,在该回购上找到合并请求,然后单击“关闭合并请求”。因为这是您的合并请求,所以您有权这样做。

WebUI选项 今天,我发现了一种通过Web UI实现这一点的方法

合并请求14也是如此

在右下角,您应该看到一个红色的删除按钮

PowerShell选项
Invoke RestMethod-Method Delete-Uri'https://gitlab.example.com/api/v4/projects/PROJECT_ID_GOES_HERE/merge_requests/14“-Headers@{'PRIVATE-TOKEN'='PRIVATE\u TOKEN\u GOES\u HERE'}

此过程在Gitlab CE 8.5.8(46bb47a)上仍然有效。所以我想至少在8.4.0和8.5.8之间的所有版本上也是如此。我认为@thomas keller提出的解决方案更干净。直接在数据库中摆弄很容易出错,您必须100%确保正确地清理了所有内容。使用API将这一责任转移到GitLab开发人员身上,他们无疑更好地理解删除MR时应该(和不应该)发生什么。我认为现在首选的解决方案应该是通过Eric提出的Web UI。关闭与删除并不完全相同。关闭MR会将其保存在DB中,以供后代使用。有时您可能希望完全摆脱它(例如,当您打开MR以测试某些内容时)。仅供参考:只有在您拥有权限所有者的情况下,“删除”按钮才可用。不幸的是,还没有文档记录:GitLab权限-但这里有间接权限提示:删除合并请求-清晰@DoctorRudolf。是的,如果您仅处于
Master
Developer
权限级别,则无法通过web UI删除。有一个新的API版本。URL已更改为
https://gitlab.example.com/api/v4/projects/4/merge_requests/85
这对CE有效,但对@DavidLilue的url有效
curl --request DELETE --header "PRIVATE-TOKEN: <private_token>" https://gitlab.example.com/api/v3/projects/4/merge_request/85