【发布时间】:2023-03-28 08:45:01
【问题描述】:
如果用户通过 GitHub 的 UI 将存储库从 foo/bar.git 重命名为 foo/baz.git,我如何通过 API 检测到这一点?
目前,如果我这样调用 API,我会得到 404:
GET /repos/foo/bar
如何找到新的存储库名称?
【问题讨论】:
标签: github github-api
如果用户通过 GitHub 的 UI 将存储库从 foo/bar.git 重命名为 foo/baz.git,我如何通过 API 检测到这一点?
目前,如果我这样调用 API,我会得到 404:
GET /repos/foo/bar
如何找到新的存储库名称?
【问题讨论】:
标签: github github-api
所以 GitHub 不会通过 API 公开重命名。
更新:这不再是真的,这个答案已经过时了; the API has exposed renames since July 2015.
鉴于您的问题的限制(即,只是存储库名称已更改,而不是用户/组织),您可以依赖存储库 ID。
如果您在重命名之前有关于 repo 的信息,您应该有 API 返回的 id。如果您这样做是为了获得对存储库的弹性访问,您只需要这样做
GET /repositories/1234
无论名称是否更改(假设您仍然可以访问它),您都将始终获得存储库。
一个更好的例子,是做
GET https://api.github.com/repositories/1234
(或任何您的 GitHub 企业实例)。
【讨论】:
其他答案已过时; As of July 21, 2015, the API does expose renames,当你 GET /repos/foo/bar 你应该收到
{
"message": "Moved Permanently",
"url": "https://api.github.com/repositories/<numeric id>",
"documentation_url": "https://developer.github.com/v3/#http-redirects"
}
那么如果你GET /repositories/<numeric id> 回复将包含
{
full_name: 'foo/baz'
...
}
此外,您现在应该能够GET /repos/foo/baz 并收到相同的回复。
如果您尝试访问私有存储库,请确保在您使用的个人访问令牌上选择了“完全控制私有存储库”范围,否则当您请求 GET /repos/foo/baz 或 @ 时,您会混淆地得到 404 987654328@,尽管GET /repos/foo/bar(旧名称)会给您上面的“永久移动”响应。
【讨论】:
我认为如果您使用该名称,则无法通过 API。
一些技巧是检索该用户的所有存储库,然后存储每个存储库的 ID 及其名称。如果您知道存储库经常更改其名称,那么您总是这样做。然后您通过 ID 获取该存储库的名称,并且您不会遇到重命名问题。
【讨论】: