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

问题描述 投票:2回答:1

我可以通过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工作正常。我只需要删除部分。

git rest curl gitlab token
1个回答
3
投票

Removing a project by project path

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

SSL错误的可能原因

Namespaced path encoding

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 endpoint

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

© www.soinside.com 2019 - 2024. All rights reserved.