- 概述
- 工作原理
- 使用GitHub集成將GitHub存儲庫導入gitlab使用GitHub權杖選擇要導入的存儲庫
- 使用GitHub集成
- 使用GitHub權杖
- 選擇要導入的存儲庫
- 鏡像和筦道狀態共亯
- 提高自託管實例的導入速度
使用導入器,您可以將GitHub存儲庫導入GitLab.com或自託管GitLab實例。
概述
注意:這些說明適用於GitLab.com上的用戶,但如果您是自託管GitLab實例的管理員,或者從GitHub Enterprise導入,則必須啟用GitHub集成。GitHub集成是從GitHub企業導入的唯一方法。如果您使用的是GitLab.com,也可以使用個人訪問權杖導入子存儲庫,但不建議使用此方法,因為它無法將所有用戶活動(如問題和拉取請求)與匹配的GitLab用戶關聯。如果您是自託管GitLab實例的管理員,您還可以使用github rake任務從github導入項目,而無需Sidekiq工作行程的約束。
導入項目的以下方面:
- 存儲庫描述(GitLab.com&7.7+)
- Git存儲庫數據(GitLab.com&7.7+)
- 問題(GitLab.com&7.7+)
- 拉取請求(GitLab.com&8.4+)
- Wiki頁面(GitLab.com&8.4+)
- 里程碑(GitLab.com&8.7+)
- 標籤(GitLab.com&8.7+)
- 發行說明說明(GitLab.com&8.12+)
- 請求評審意見(GitLab.com&10.2+)
- 定期發佈和拉取請求評論
對pull請求和問題的引用被保留(GitLab.com&8.7+),並且每個導入的存儲庫都保持可見性級別,除非visibility level受到限制,在這種情況下,它默認為默認的項目可見性。
工作原理
導入問題和拉取請求時,導入程式會嘗試在GitLab實例的資料庫中找到它們的GitHub作者和指派(請注意,拉取請求在GitLab中稱為“合併請求”)。
要使此關聯成功,在導入之前,存儲庫中的每個GitHub作者和受讓人必須先使用GitHub圖標登入到GitLab帳戶,或者具有與GitLab帳戶的電子郵寄地址匹配的主電子郵寄地址的GitHub帳戶。
如果在GitLab的資料庫中找不到項目中引用的用戶,則將項目創建者(通常是啟動導入過程的用戶)設定為作者/受讓人,但會添加一條關於該問題的說明,其中提到了原始作者。
如果不存在任何新的名稱空間(組),則導入程式將創建這些名稱空間(組),或者,如果採用了名稱空間,則會在啟動導入過程的用戶的名稱空間下導入位置。命名空間/repositoryname也可以通過適當的許可權進行編輯。
進口商還將在與打開的拉取請求相關的項目分支上導入分支。這些分支將使用類似於GH SHA username/pull request number/fork name/branch的命名方案導入。這可能導致分支與GitHub存儲庫的分支不一致。
GH-SHA-username/pull-request-number/fork-name/branch
有關其他科技詳細資訊,請參閱github Importerdeveloper檔案。
有關導入過程的概述,請參閱從GitHub遷移到GitLab的視頻。
將GitHub存儲庫導入GitLab
使用GitHub集成
在開始之前,請確保要映射到GitLab用戶的任何GitHub用戶都具有:
- 使用GitHub圖標登入的GitLab帳戶-或-
- 具有與GitHub用戶的公共電子郵寄地址匹配的電子郵寄地址的GitLab帳戶
用戶匹配嘗試按此順序進行,如果以任何一種管道都未標識用戶,則活動與執行導入的使用者帳戶關聯。
注意:如果您使用的是自託管的GitLab實例,或者從GitHub企業導入,則此過程要求您已配寘了GitHub集成。
- 在頂部巡覽列中,按一下+並選擇“新建項目”。
- 選擇導入項目選項卡,然後選擇GitHub。
- 選擇第一個按鈕以列出GitHub存儲庫。您將被重定向到GitHub上的頁面以授權GitLab應用程序。
- 按一下“授權gitlabhq”。您將被重定向回GitLab的導入頁面,並列出所有GitHub存儲庫。
- 繼續選擇要導入的存儲庫。
使用GitHub權杖
注意:不建議使用個人訪問權杖導入項目。如果您是GitLab.com用戶,則可以使用個人訪問權杖從GitHub導入項目,但此方法無法將所有用戶活動(如問題和拉取請求)與匹配的GitLab用戶關聯。如果您是自託管GitLab實例的管理員或從GitHub Enterprise導入,不能使用個人訪問權杖。建議所有用戶使用GitHub集成方法(如上所述)。請閱讀“如何工作”部分中的詳細資訊。
如果不使用GitHub集成,您仍然可以使用GitHub執行授權,以授予GitLab對存儲庫的存取權限:
- 轉到https://github.com/settings/tokens/new
- 輸入權杖描述。
- 選擇回購範圍。
- 按一下生成權杖。
- 複製權杖雜湊。
- 返回GitLab並將權杖提供給GitHub導入程式。
- 點擊列出GitHub存儲庫按鈕,等待GitLab讀取存儲庫資訊。完成後,您將進入導入頁面,選擇要導入的存儲庫。
選擇要導入的存儲庫
授權訪問GitHub存儲庫後,將重定向到GitHub導入器頁面,並列出GitHub存儲庫。
- 默認情况下,建議的存儲庫名稱空間與GitHub中的名稱匹配,但根據您的許可權,您可以選擇在繼續導入任何名稱之前編輯這些名稱。
- 選擇任意數量存儲庫旁邊的導入按鈕,或選擇導入所有存儲庫。此外,還可以按名稱篩選項目。如果應用了篩選,則導入所有存儲庫僅導入匹配的存儲庫。
- Status列顯示每個存儲庫的導入狀態。您可以選擇讓頁面保持打開狀態並即時更新,也可以稍後返回。
- 導入存儲庫後,按一下其GitLab路徑以打開其GitLab URL。
鏡像和筦道狀態共亯
根據GitLab層的不同,可以設定項目鏡像以使導入的項目與其GitHub副本保持同步。
此外,您可以配寘GitLab,以便使用GitHub項目集成將筦道狀態更新發送回GitHub。
如果您使用CI/CD導入項目進行外部repo,則會自動配寘以上兩項。
提高自託管實例的導入速度
注意:需要管理員訪問GitLab服務器。
對於大型項目,導入所有數據可能需要一段時間。要减少所需的時間,可以新增處理以下隊列的sidekiq工作線程數:
- github_進口商
github_importer
- github_進口商_高級階段
github_importer_advance_stage
為了獲得最佳體驗,建議至少有4個Sidekiq行程(每個行程運行的線程數等於CPU核心數)只處理這些隊列。還建議這些行程在單獨的服務器上運行。對於4臺8核服務器,這意味著您最多可以並行導入32個對象(例如問題)。
减少尅隆存儲庫所花費的時間可以通過新增存儲Git存儲庫(對於GitLab實例)的磁片的網絡輸送量、CPU容量和磁片性能(例如,使用高性能ssd)來完成。新增Sidekiq工作器的數量不會减少尅隆存儲庫所花費的時間。