我正在考虑使用GitHub API创建新存储库的最佳方法,该存储库是GitHub上另一个存储库的精确副本。下载和上传每个文件似乎效率低下。
答案 0 :(得分:1)
答案 1 :(得分:1)
使用Ruby和Octokit library你可以试着像这样:
# Set Up
class GithubCopy
def self.copy_repo(args)
from = args.fetch(:from)
to = args.fetch(:to)
client = Octokit::Client.new(:access_token => 'your access token')
base_items = client.contents from
self.copy_items(base_items, from, to, client)
end
private
def self.copy_items(base_items, from, to, client)
base_items.each do |item|
content = client.content from, :path => item.path
if content.is_a?(Array)
self.copy_items(content, from, to, client)
else
client.create_contents to, content.path, "Creating #{content.name}", Base64.decode64(content.content)
end
end
end
end
# Usage
GithubCopy.copy_repo(from: 'repo1', to: 'repo2')
这假设 repo1 和 repo2 都存在且您的访问令牌对两个repos都具有适当的权限。如果您需要创建一个repo,请首先使用:
client = Octokit::Client.new(:access_token => settings.github_access_token)
client.create_repository 'some-repo', {organization: 'some-org'}
如果两个回购都属于同一个帐户,则他们将需要单独的名称,如@tmarwen所述。一个缺点是这种方法可能需要一些时间,具体取决于原始的回购规模。
答案 2 :(得分:0)
Github上不允许重复,无论您是使用Github接口创建新的repo还是使用Github RESTful API。
在用户帐户或组织帐户下允许使用一个唯一名称的一个存储库。