repo 的用法和理解
repo是調git的腳本
repo的用法
注:repo只是google用Python腳本寫的調用git的一個腳本,主要是用來下載、管理Android項目的軟件倉庫。(也就是說,他是用來管理給git管理的一個個倉庫的)
下載 repo 的地址:http://android.git.kernel.org/repo ,可以用以下二者之一來下載 repo
curl http://android.git.kernel.org/repo> ~/bin/repo?
下載完成后須修改repo的權限: chmod a+x ~/bin/repo
用repo sync 在抓去 android source code 的時候,會經常出現一些錯誤導致 repo sync 中斷,每次都要手動開始。 可以用如下的命令,來自動重復
$?=1;
while [ $? -ne 0 ] ;
do?repo sync ;
done
獲取幫助:
repo help [ command ]?? //顯示command 的詳細的幫助信息內容
?
示例: repo helpinit 來獲取 repo init 的其他用法
?
repo init -u URL 用以在當前目錄安裝 repository ,會在當前目錄創建一個目錄 ".repo"? -u 參數指定一個URL, 從這個URL 中取得repository 的 manifest 文件。??
?
示例:repo init-u git://android.git.kernel.org/platform/manifest.git
?
獲取的manifest文件放在.repo目錄中。命名為manifest.xml。這個文件的內容其實就是所有被git管理的倉庫的列表!
?
可以用 -m 參數來選擇獲取 repository 中的某一個特定的 manifest 文件,如果不具體指定,那么表示為默認的 namifest 文件 (default.xml)
?
repo init -ugit://android.git.kernel.org/platform/manifest.git -m dalvik-plus.xml
?
(有諸多供我們選擇的manifest文件,所有的manifest文件都放在目錄.repo/manifests中,該目錄本身亦被git所管理,你可以cd進去看看)
?
可以用 -b 參數來指定某個manifest 分支。
?
repo init -ugit://android.git.kernel.org/platform/manifest.git -b release-1.0
?
你會發現.repo/manifests是個被git管理的倉庫,這里放的是所有的manifest文件(*.xml),因為被git管理,固然有分支,-b可以切換到你想要的分支然后再下載相關的xml文件,當然具體下載那個xml還要看-m參數了,所以如果你僅僅指定-b而沒有-m的話,就是下載-b指定分支下的default.xml文件
?
如果不指定-b參數,那么會默認使用master分支
?
4. repo sync [project-list]
?
下載最新本地工作文件,更新成功,這本地文件和repository 中的代碼是一樣的。 可以指定需要更新的project , 如果不指定任何參數,會同步整個所有的項目。
?
如果是第一次運行 reposync , 則這個命令相當于 git clone ,會把 repository 中的所有內容都拷貝到本地。如果不是第一次運行 repo sync , 則相當于 git remote update ;? gitrebase origin/branch .? repo sync 會更新 .repo 下面的文件。 如果在merge 的過程中出現沖突, 這需要手動運行
?git?rebase --continue
?
5. repo update[ project-list ]
?
上傳修改的代碼 ,如果你本地的代碼有所修改,那么在運行 repo sync 的時候,會提示你上傳修改的代碼,所有修改的代碼分支會上傳到 Gerrit (基于web 的代碼review 系統), Gerrit 受到上傳的代碼,會轉換為一個個變更,從而可以讓人們來review 修改的代碼。
?
6. repo diff [ project-list ]
?
顯示提交的代碼和當前工作目錄代碼之間的差異。
?
7. repo download? target revision
?
下載特定的修改版本到本地, 例如:?repo download pltform/frameworks/base 1241 下載修改版本為 1241 的代碼
?
8. repo start newbranchname .
?
創建新的branch分支。 "." 代表當前工作的branch 分支。
?
9.?repo prune [project list]
?
刪除已經merge 的 project
?
10. repo foreach [ project-lists] -ccommand
?
對每一個 project 運行 command 命令
11. repo status
?
顯示 project 中每個倉庫的狀態
?
12. repo forall -c
?
總結
以上是生活随笔為你收集整理的repo 的用法和理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 主目录 配置文件
- 下一篇: WebKit 内核源码分析 (一)