簡體   English   中英

將多個 gitlab 存儲庫遷移到 github - 如何一次完成所有操作(而不是手動)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM