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

San*_*anj 26 gitlab gitlab-omnibus

我在gitlab(本地)服务器上创建了一个合并请求.现在每当我点击合并请求时,请求都会超时,错误为500.在此之前,我曾经得到错误代码504,并且我应用了此gitlab支持主题中提到的更改.

我想要做的就是删除合并请求.有这样的手动方式吗?

Eri*_*son 30

Web UI选项

今天我发现了一种使用Web UI执行此操作的方法.

因此,对于合并请求14

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

在右下角,你会看到一个红色的删除按钮.

Gitlab删除合并请求屏幕截图

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'}

  • 仅供参考:删除按钮仅在您拥有权限所有者时可用.遗憾的是还没有记录:GitLab权限 - https://docs.gitlab.com/ee/user/permissions.html但间接权限提示:删除合并请求 - https://docs.gitlab.com/ee/api/ merge_requests.html#删除-A-合并请求 (11认同)
  • 很清楚@DoctorRudolf.是的,如果你只是在`Master`或`Developer`权限级别,你无法通过Web UI删除. (3认同)

Tho*_*ler 11

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

curl --request DELETE --header "PRIVATE-TOKEN: <private_token>" https://gitlab.example.com/api/v3/projects/4/merge_request/85
Run Code Online (Sandbox Code Playgroud)


Ray*_*rea 10

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

(请注意,我只在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
Run Code Online (Sandbox Code Playgroud)

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

select id, title from merge_requests;
Run Code Online (Sandbox Code Playgroud)

您将获得合并请求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;
Run Code Online (Sandbox Code Playgroud)

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

\q
Run Code Online (Sandbox Code Playgroud)

您的合并请求现在应该从Web界面消失.

  • 此过程仍适用于Gitlab CE 8.5.8(46bb47a).所以我认为至少在8.4.0和8.5.8之间的所有版本上也是如此. (3认同)
  • 我认为@thomas-keller 提出的解决方案更简洁。直接在数据库中摆弄容易出错,您必须 100% 确保正确清理所有内容。使用 API 将这一责任转移给 GitLab 开发人员,他们无疑对删除 MR 时应该(和不应该)发生的事情有更好的理解。 (2认同)