如何使用curl删除GitLab存储库?

时间:2018-09-01 16:37:31

标签: git rest curl gitlab token

我能够通过GitHub实现这一目标。但是我无法在GitLab上做同样的事情。目前,我拥有的是:

curl -u "$user:$token" -H "Content-Type:application/json" -H "PRIVATE-TOKEN:$token" \
-X DELETE https://git.lab.com/api/v4/projects/$repo_name

然后我得到这个错误:

curl: (35) error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error

我已经有了一个使用curl的工作脚本,可以在命令行上创建GitLab存储库,因此我的curl可以正常工作。我只需要删除部分。

1 个答案:

答案 0 :(得分:3)

按项目路径删除项目

curl -H 'Content-Type: application/json' -H 'Private-Token: $privatetoken' \
-X DELETE https://gitlab.com/api/v4/projects/$namespace%2F$projectname

SSL错误的可能原因

命名路径编码

通过服务器端的正斜杠分隔URI,然后对所得的路径元素进行分类。

由于正斜杠被视为特殊字符,因此,如果要将其包含为URI路径元素,则需要URL encode,因此服务器不会尝试拆分它。

如果您正在执行ID后面带有其他参数的请求,这将更容易引起问题。

在以下示例中,$namespacefoo,而$projectnamebar

请求:GET /projects/foo%2Fbar/users

URI路径元素:

  • projects-调用将在其上执行的资源
  • foo%2Fbar-特定资源(项目)名称为foo/bar(经过URL解码后)
  • users-返回资源

请求:GET /projects/foo/bar/users

URI路径元素:

  • projects-调用将在其上执行的资源
  • foo-特定资源(项目)名称为foo(无此类项目,缺少名称空间)
  • bar-要查询的资源或要执行的操作(没有此类资源或操作)
  • users-其他查询参数(首先不存在父资源或操作)

API端点

如果您使用的是托管在https://gitlab.com/上的公共GitLab,则应使用gitlab.com域名而不是git.lab.com,后者不是GitLab Inc.拥有。