[英]Migrate multiple gitlab repositories to github - how to do it all at once (instead of manually)
我在 Gitlab 上有 45 個項目/存儲庫。 我想把它移到我的 Github 上。
我知道有一種方法可以通過導入存儲庫在 UI 上一一完成。
但是如何一次完成這一切呢?
這是一個基於 python 的解決方案,假設我們僅在您的項目列表中引用 repos(不在子組內,盡管可以修改它以適用於這種情況)。
這些步驟將引導您完成這個問題的難點,讓存儲庫存在於 GitHub 上(另外還有復制描述和匹配公共/私有設置的好處)。 為此,您必須使用 GitHub API 或手動創建它們。
先決條件:
這將使用 GitLab 列表項目GET 請求。 此外,它會重復使用 GitHub 創建 repo POST 請求。 一旦你運行了這個(個人測試),你可以在最后使用 repos 輸出列表並編寫一些簡單的 bash 來迭代它們,克隆每個存儲庫,添加一個 git remote ,然后推送到遠程。 或者,您可以使用上面的--mirror
選項。 無論如何,此時選擇比比皆是。
GITLAB_USERNAME = '<user>'
GITHUB_USERNAME = '<user>'
GITLAB_TOKEN = '<token>'
GITHUB_TOKEN = '<token>'
import requests
import json
x = requests.get( \
url='https://gitlab.com/api/v4/users/{user}/projects'.format(user=GITLAB_USERNAME), \
headers={'PRIVATE-TOKEN': GITLAB_TOKEN})
print(x)
repo_names = []
for repo in json.loads(x.content):
# for k,v in repo.items():
# print(k,v)
print('Name:', repo['name'])
print('Description:', repo['description'])
print('Visibility:', repo['visibility'])
print('ssh_url_to_repo:', repo['ssh_url_to_repo'])
repo_names.append(repo['name'])
y = requests.post( \
url='https://api.github.com/user/repos', \
headers={'Accept': 'application/vnd.github+json', 'Authorization': 'token {token}'.format(token=GITHUB_TOKEN)}, \
json={'name': repo['name'], 'description': repo['description'], 'private': repo['visibility']=='private'})
print(y)
print('')
for name in repo_names:
print(name)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.