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