如何将Git服务器存储库问题推送到Github存储库?

时间:2015-06-08 12:17:54

标签: git github repository bitbucket

我在 Git服务器上有一个存储库,如Bitbucket,现在我想切换到Github。所以我成功地在Github上复制了我的存储库,但我的存储库问题(近200个问题)没有复制到Github存储库中!

有一种方法可以复制Github存储库中的所有问题,而无需手动逐个插入!

1 个答案:

答案 0 :(得分:3)

正如choroba所述,您可以使用BitBucket API检索当前的问题列表或特定问题的详细信息。有关详细信息,请查看https://confluence.atlassian.com/display/BITBUCKET/Use+the+Bitbucket+REST+APIs。简而言之,您可以向https://api.bitbucket.org/2.0/repositories/<repo-owner-username>/<repo-name>/issues/<ID>发出请求并获取问题详细信息的JSON响应。您可以在浏览器中转到https://api.bitbucket.org/2.0/repositories/tutorials/tutorials.bitbucket.org/issues/1以查看响应的示例。

由于您不想迁移所有问题,因此您可以重复向https://api.bitbucket.org/2.0/repositories/tutorials/tutorials.bitbucket.org/issues/<ID>发出请求,其中ID范围从1到您遇到的问题很多。

获得现有问题详细信息后,您需要编写一些代码来解析JSON,然后使用BitBucket提供的信息向GitHub的API发出请求以创建新问题。

您可以在https://developer.github.com/v3/issues/#create-an-issue阅读GitHub的API。基本上,您会向POST发出https://api.github.com/repos/<repo-owner-username>/<repo-name>/issues请求,并提供必要的参数以及请求。具体如何执行此操作取决于您用于发出请求的库。使用CURL,请求可能看起来像curl -H "Content-Type: application/json" -X POST -d '{"title":"Found an issue","body":"I'm having a problem with this."}' https://api.github.com/repos/behzad-khosravifar/myRepo/issues

所以将pseudocode放在一起可能看起来像:

for (id = 1 to 100)
    issueRawData = http_get('https://api.bitbucket.org/2.0/repositories/<owner>/<repo>/issues/'+id)
    issueJson = JSON.parse(issueRawData);
    postData = { "title" : issue.title, "body" : issue.content.raw }
    http_post('https://api.github.com/repos/<repo-owner-username>/<repo-name>/issues/'+id, postData)
}

额外&amp;陷阱

  • 迭代所有问题将意味着您根据BitBucket中已关闭的问题在GitHub中创建问题。您可以检查从BitBucket返回的“状态”字段,以在GitHub中有条件地创建问题。或者,无论如何都要创建问题,然后使用GitHub的API在创建问题后关闭它。
  • 您需要使用GitHub(可能还有BitBucket)进行身份验证。 https://developer.github.com/v3/auth/提供了有关如何在GitHub中创建问题时提供身份验证详细信息的详细信息。