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

How to remove merge request from GitLab server

我在 gitlab(本地)服务器上创建了一个合并请求。现在,每当我单击合并请求时,请求都会超时并显示错误 500。在此之前,我曾经收到错误代码 504,并且我应用了 this gitlab support topic.

中提到的更改

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

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

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

在命令提示符下,执行以下命令(以 root 身份):

sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d gitlabhq_production

这将调出一个 PostgreSQL 命令终端。接下来,您必须找到要删除的合并请求。在 PostgreSQL 命令终端输入以下内容:

select id, title from merge_requests;

您将获得合并请求 ID 和标题的列表。找到您要删除的那个并记下 id

好的,假设您已经找到要删除的合并请求并且 id5。您只需使用以下 SQL 命令删除与该合并请求关联的所有数据。 (将下面命令中的 5 替换为您的实际合并请求 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;

您现在可以通过键入以下命令退出 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

转到目标存储库,在该存储库上找到合并请求,然后单击 "Close Merge Request"。由于这是您的合并请求,您有权这样做。

网络UI选项

今天我发现了一种通过 Web 实现此目的的方法 UI。

所以对于合并请求 14

https://gitlab.example.com/MyGroup/MyProject/merge_requests/14/edit

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

PowerShell 选项

Invoke-RestMethod -Method Delete -Uri 'https://gitlab.example.com/api/v4/projects/PROJECT_ID_GOES_HERE/merge_requests/14' -Headers @{'PRIVATE-TOKEN'='PRIVATE_TOKEN_GOES_HERE'}