安全圈 | 专注于最新网络信息安全讯息新闻

首页

將項目從github導入gitlab

作者 gigliotti 时间 2020-02-27
all

使用導入器,您可以將GitHub存儲庫導入GitLab.com或自託管GitLab實例。

概述

注意:這些說明適用於GitLab.com上的用戶,但如果您是自託管GitLab實例的管理員,或者從GitHub Enterprise導入,則必須啟用GitHub集成。GitHub集成是從GitHub企業導入的唯一方法。如果您使用的是GitLab.com,也可以使用個人訪問權杖導入子存儲庫,但不建議使用此方法,因為它無法將所有用戶活動(如問題和拉取請求)與匹配的GitLab用戶關聯。如果您是自託管GitLab實例的管理員,您還可以使用github rake任務從github導入項目,而無需Sidekiq工作行程的約束。

導入項目的以下方面:

對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用戶都具有:

用戶匹配嘗試按此順序進行,如果以任何一種管道都未標識用戶,則活動與執行導入的使用者帳戶關聯。

注意:如果您使用的是自託管的GitLab實例,或者從GitHub企業導入,則此過程要求您已配寘了GitHub集成。

使用GitHub權杖

注意:不建議使用個人訪問權杖導入項目。如果您是GitLab.com用戶,則可以使用個人訪問權杖從GitHub導入項目,但此方法無法將所有用戶活動(如問題和拉取請求)與匹配的GitLab用戶關聯。如果您是自託管GitLab實例的管理員或從GitHub Enterprise導入,不能使用個人訪問權杖。建議所有用戶使用GitHub集成方法(如上所述)。請閱讀“如何工作”部分中的詳細資訊。

如果不使用GitHub集成,您仍然可以使用GitHub執行授權,以授予GitLab對存儲庫的存取權限:

選擇要導入的存儲庫

授權訪問GitHub存儲庫後,將重定向到GitHub導入器頁面,並列出GitHub存儲庫。

鏡像和筦道狀態共亯

根據GitLab層的不同,可以設定項目鏡像以使導入的項目與其GitHub副本保持同步。

此外,您可以配寘GitLab,以便使用GitHub項目集成將筦道狀態更新發送回GitHub。

如果您使用CI/CD導入項目進行外部repo,則會自動配寘以上兩項。

提高自託管實例的導入速度

注意:需要管理員訪問GitLab服務器。

對於大型項目,導入所有數據可能需要一段時間。要减少所需的時間,可以新增處理以下隊列的sidekiq工作線程數:

github_importer github_importer_advance_stage

為了獲得最佳體驗,建議至少有4個Sidekiq行程(每個行程運行的線程數等於CPU核心數)只處理這些隊列。還建議這些行程在單獨的服務器上運行。對於4臺8核服務器,這意味著您最多可以並行導入32個對象(例如問題)。

减少尅隆存儲庫所花費的時間可以通過新增存儲Git存儲庫(對於GitLab實例)的磁片的網絡輸送量、CPU容量和磁片性能(例如,使用高性能ssd)來完成。新增Sidekiq工作器的數量不會减少尅隆存儲庫所花費的時間。