如果用户通过GitHub的UI将存储库从foo/bar.git
重命名为foo/baz.git
,我该如何通过API检测到这一点?
目前,如果我这样调用API,我会收到404:
GET /repos/foo/bar
如何找到新的存储库名称?
答案 0 :(得分:3)
因此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企业实例)。
答案 1 :(得分:2)
其他答案已过时; 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
并收到相同的回复。
如果您尝试访问私有存储库,请确保您拥有私有存储库的&#34;完全控制权。在您使用的个人访问令牌上选择的范围,或者当您请求GET /repos/foo/baz
或GET /repos/<numeric id>
,时,即使 GET /repos/foo/bar
(旧名称)将为您提供永久性的&#34;永久移动&#34;上面的回应。
答案 2 :(得分:0)
我认为如果您使用该名称,则无法通过API实现。
有些hack是检索该用户的所有存储库,然后存储每个存储库的ID及其名称。如果您知道存储库经常更改其名称,则始终执行此操作。然后,您按ID获取该存储库的名称,并且您不会遇到重命名问题。