平台
Ubuntu 18.04
GitLab Community Edition 11.11.0
參考
概述
gitlab提供了一個可以運行在本地的免費的代碼托管平台,就像一個本地的github,可以將自己的平時寫的或者一些經典的開源程序下載下來,然后mirror到本地gitlab進行托管,比如Android。我們知道Android工程是有幾百個大大小小的git工程組成,為了管理這些git工程,Android提供了repo。關於repo的用法,請參考:
那么如何將Android的代碼倉庫mirror到本地的gitlab上呢? 下面以一個Android代碼倉庫中的一個git工程說明一下,清楚了一個怎么搞,其他的也不在話下,可以用腳本批量處理。
正文
一、搭建gitlab服務

二、下載Android代碼
參考:
為了方便以后下載,先按照官網的推薦,建立的一個Android代碼倉庫的本地mirror,下載完成后,內容如下:

然后利用這個mirror,本地clone出一份Android代碼,比如:

對應的manifest.xml文件如下(當然也可以只clone一份aosp_mirror/platform/manifest.git,然后切到tags為android-7.1.2_r36的分支):

三、上傳到gitlab
1、首先需要往本地gitlab上傳一個repo工程
在上面下載的aosp_mirror目錄下有一個git-repo.git工程,這里需要將其上傳到gitlab上,首先在gitlab上創建一個空的git-repo工程:

2、上傳git-repo.git
進入git-repo.git目錄下,執行如下命令:

執行完畢后,可以看到gitlab里的git-repo里已經有東西了:

3、上傳一個git工程

以上面的manifest.xml中的build/soong為例,熟悉manifest.xml語法的話應該清楚,path表示將來會在本地創建build/soong目錄,而name表示的是遠程服務器中的路徑。
為了簡單起見,首先在gitlab上創建一個名為build_soong的空的git工程:

然后在aosp_mirror的platform下找到soong.git工程,進行上傳:

此時gitlab上的build_soong工程里已經有內容了:

4、創建一個manifest工程,用於存放manifest.xml文件

四、下載測試
repo init:

repo sync:

查看:

完。