重命名后如何查找存储库的新位置

时间:2015-02-28 05:43:53

标签: github github-api

如果用户通过GitHub的UI将存储库从foo/bar.git重命名为foo/baz.git,我该如何通过API检测到这一点?

目前,如果我这样调用API,我会收到404:

GET /repos/foo/bar

如何找到新的存储库名称?

3 个答案:

答案 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/bazGET /repos/<numeric id>时,即使 GET /repos/foo/bar旧名称)将为您提供永久性的&#34;永久移动&#34;上面的回应。

答案 2 :(得分:0)

我认为如果您使用该名称,则无法通过API实现。

有些hack是检索该用户的所有存储库,然后存储每个存储库的ID及其名称。如果您知道存储库经常更改其名称,则始终执行此操作。然后,您按ID获取该存储库的名称,并且您不会遇到重命名问题。