簡單學習:repo入門


一:關於repo

repo是Google開發的用於管理Android版本庫的一個工具,repo並不是用於取代git,而是用Python對git進行了一定的封裝,簡化了對多個Git版本庫的管理。對於repo管理的任何一個版本庫,都需要使用git命令進行操作。

repo的使用過程如下:

1.運行repo init 命令,克隆Android的一個清單庫,這個清單庫是通過xml技術建立的版本清單庫。

2.清單庫中的manifest.xml文件,列出了160多個版本庫的克隆方式。包括版本庫的地址和工作去地址的對應關系,以及分支的對應關系。

3.運行repo sync的命令,開始同步,即分別克隆這160個版本庫到本地的工作區中。

4.同時對160多個版本庫進行切換分支操作,切換到某個分支。

二:安裝repo

首相下載repo的引導腳本,可以使用wget,curl甚至瀏覽器從http://android.git.kernel.org/repo上下載。把repo腳本設置為可執行,並復制到可執行的路徑中。在Linux上可以用下面的指令將repo下載並復制到用戶主目錄的bin目錄下。

curl -L -k http://android.git.kernel.org/repo >/bin/repo

chmod a+x ~/bin/repo

這里的repo只是一個引導腳本而不是直接稱之為repo,因為repo大部分功能代碼都不在其中,下載的只是幫助真個repo程序繼續下載和加載的工具。

三,repo和清單庫的初始化

下載並保存repo引導腳本后,建立一個工作目錄,這個工作目錄將作為Android工作區目錄。在工作目錄中執行repo init -u <url>,完成repo完整的下載及項目清單版本庫的下載。

mkdir working-directory-name

cd working-directory-name

repo init -u git://android.git.kernel.org/platform/manifest.git

命令repo init要完成如下操作:

1.完成repo工具的完整下載,現在僅有的不過是repo 的引導程序。初始化操作會從android的代碼中克隆repo.git庫到當前的目錄下.repo/repo目錄下。在完成repo.git克隆之后,repo init命令會將控制權交給工作區的.repo/repo/main.py。

2.克隆android的清單庫manifest.git(地址來自與-u參數)

3.克隆的清單庫位於.repo/manifests.git中,本地克隆到.repo/manifests。

4.詢問用戶的姓名和郵件地址,如果和git默認的用戶名,郵件地址不同,則記錄在./repo/manifests.git庫的config文件中。

5.命令repo init還可以附帶--mirror參數,以建立和傻瓜女友Android的版本庫一模一樣的鏡像。

3.1清單庫是什么?從哪里下載?

清單庫實際上只包含一個default.xml文件,這個XML文件定義了多個版本庫和本地地址的映射關系,是repo工作的指引文件,所以在使用repo引導腳本進行初始化的時候,必須通過-u參數指定清單庫的源地址。

清單庫的下載,是通過repo init命令初始化時,用-u參數指定清單庫的位置。例如repo針對Android代碼庫進行初始化時執行的命令:

repo init -u git://android.git.kernel.org/platform/manifest.git

repo引導腳本的init子命令可以使用下列和清單庫相關的參數:

-u:設定清單庫的git服務器地址

-b:檢出清單庫的特定分支

--mirror:只在repo第一次初始化的時候調用,以和Android服務器同樣的結構在本地建立鏡像

四,同步項目

repo sync

對於Android,這個操作需要通過網絡傳遞接近2GB的內容,我們可以在repo sync后面跟上需要的項目的名稱,項目的名稱來自.repo/manifest.xml這個XML文件中project元素的name屬性值。例如克隆platform/build項目:

repo sync platform/build







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM