我在 Git服务器上有一个存储库,如Bitbucket,现在我想切换到Github。所以我成功地在Github上复制了我的存储库,但我的存储库问题(近200个问题)没有复制到Github存储库中!
有一种方法可以复制Github存储库中的所有问题,而无需手动逐个插入!
答案 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)
}