Repo是一個(gè)用Python語言開發(fā)的命令工作 ,可以更文件地進(jìn)行多版本庫的管理。
Repo是對(duì)Git進(jìn)行了一定的封裝,簡化了對(duì)多個(gè)Git版本庫的管理。對(duì)于repo管理的任何一個(gè)版本庫,都需要使用Git命令進(jìn)行操作。
Repo的使用過程大致如下: 運(yùn)行repo init命令,克隆Android的一個(gè)清單庫。這個(gè)清單庫是通過xml技術(shù)建立的版本庫清單。 打開 .repo 文件夾中的 清單文件查看清單庫中的manifest.xml文件,列出了多個(gè)版本庫的克隆方式。包括版本庫的地址和工作區(qū)地址的對(duì)應(yīng)關(guān)系,以及分支的對(duì)應(yīng)關(guān)系。
1. repo init -u
新建一個(gè)文件夾, cd 到該目錄 在工作目錄中執(zhí)行repo init -u ,完成repo完整的下載及項(xiàng)目清單版本庫(manifest.git)的下載。
repo init -u url -b branchname這個(gè)初始化命令主要干了兩件事:
(1)在當(dāng)前目錄里面下載安裝 repo:因?yàn)樽畛跄銖木W(wǎng)上下載的那個(gè) repo 文件并不是一個(gè)完整的 repo,它主要負(fù)責(zé)初始化工作,并且在初始化完成以后將命令移交給完整的 repo 來執(zhí)行。
(2)根據(jù)命令中指定的地址(-u url)去下載項(xiàng)目的管理文件 manifest.xml。我們前面說過這個(gè) manifest.xml 是用 git 管理起來的, 在這里 -b branchname 就是指的 manifest.xml 的相應(yīng) -m 參數(shù)是加載相應(yīng)的xml信息,正常拉代碼或切xml數(shù)據(jù)會(huì)用到
2.repo sync命令
克隆android的清單庫manifest.git(地址來自于-u參數(shù))。
repo sync子命令用于參照清單文件克隆可同步版本庫。如果某個(gè)項(xiàng)目版本庫尚不存在,則執(zhí)行repo sync命令相當(dāng)于執(zhí)行g(shù)it clone。如果項(xiàng)目版本庫已經(jīng)存在,則相當(dāng)于執(zhí)行下面的兩個(gè)命令: git remote update:相當(dāng)于對(duì)每一個(gè)remote源執(zhí)行fetch操作。 git rebase origin/branch:針對(duì)當(dāng)前分支的跟蹤分支執(zhí)行rebase操作。
repo syn同步所有的項(xiàng)目,作為一個(gè)開發(fā)人員,通常只需要改某個(gè)項(xiàng)目,所以常用的是下面的命令。repo sync -c (常用)同步某個(gè)分支的代碼,一套代碼倉庫可能包括N個(gè)分支,這種方式只同步其中想要的那個(gè)分支,節(jié)約時(shí)間repo sync -lcheckout 出本地repo數(shù)據(jù)代碼,不走網(wǎng)絡(luò)服務(wù)器repo sync – help3.repo start命令 創(chuàng)建本地的分支 repo start子命令實(shí)際上是對(duì)git checkout -b命令的封裝。為指定的項(xiàng)目或所有項(xiàng)目(若使用-all參數(shù)),以清單文件中為項(xiàng)目認(rèn)定的分支或里程碑為基礎(chǔ),創(chuàng)建特性分支。特性分支的名稱由命令的第一個(gè)參數(shù)指定。
repo start <newbranchname> [--all | <PRoject>…]repo start branchname --all4.repo status命令 —查看所有倉庫的狀態(tài) repo status子命令實(shí)際上是對(duì)git diff-index、git diff-files命令的封裝,同時(shí)顯示暫存區(qū)的狀態(tài)和本地文件修改的狀態(tài)。 repo status [ project…]
5.repo checkout命令 repo checkout子命令實(shí)際上是對(duì)git checkout命令的封裝。檢出之前由repo start創(chuàng)建的分支。 repo checkout branchname [project…]
6.repo branches命令 —查看所有倉庫的分支命令 repo branches讀取各個(gè)項(xiàng)目的分支列表并匯總顯示。 repo branches […]
7.repo upload命令 (重要) 注意:如果分支不是repo start 命令建的, repo upload 命令將不會(huì)提交 repo upload相當(dāng)于git push,但是又有很大的不同。執(zhí)行repo upload不是將版本庫改動(dòng)推送到克隆時(shí)的遠(yuǎn)程服務(wù)器,而是推送到代碼審查服務(wù)器(Gerrit)的特殊引用上。 代碼審核服務(wù)器會(huì)對(duì)推送的提交進(jìn)行特處理,將新的提交顯示為一個(gè)待審核的修改集,并進(jìn)入代碼審查流程。只有當(dāng)審核通過后,才會(huì)合并到正式的版本庫中。 用法如下:
repo upload . 這是不帶審核者的上傳方式,記住后面是 空格 + "." (可以到Gerrit服務(wù)器上添加)repo upload --re=XXXXX . 添加審核者 (可以到Gerrit服務(wù)器上添加)repo upload [--re --cc] [<project>]...參數(shù):-h, --help 顯示幫助信息。-t 發(fā)送本地分支名稱到Gerrit代碼審核服務(wù)器。--re=REVIEWERS, --reviewers=REVIEWERS 要求由指定的人員進(jìn)行審核。-cc=CC 同時(shí)發(fā)送通知到如下郵件地址。8. 在 7后,如果發(fā)現(xiàn)需要修訂,可使用 git commit –amend (重要) 如果發(fā)現(xiàn)上傳后的代碼有問題想重新修改,可以在本地繼續(xù)修改代碼, 用git add把修改內(nèi)容加到暫存區(qū),用git commit –amend修改上一次提交,再用repo upload重新上傳修訂集。這樣上傳后不會(huì)產(chǎn)生新的提交,而是會(huì)在原有的提交中新加一個(gè)修訂集。用法
git addgit commit --amend9.repo download命令 repo download命令主要用于代碼審核者下載和評(píng)估提交的修訂。使用repo download命令實(shí)際上就是用git fetch獲取到對(duì)應(yīng)項(xiàng)目的refs/changes//patchset>引用,并自動(dòng)切換到對(duì)應(yīng)的引用上。 repo download {project change [/patchset]}… repo prune命令 repo prune子命令實(shí)際上是對(duì)git branch -d命令封裝,該命令用于掃描項(xiàng)目的各個(gè)分支,并刪除已經(jīng)合并的分支。 repo prune […] repo 遍歷整個(gè)項(xiàng)目 — liangjiong.zhou 2013/12/31 03:12
10.repo forall 可以用來遍歷所有g(shù)it倉庫。(重要) repo forall -c git cmd —對(duì)所有g(shù)it庫執(zhí)行“git cmd”操作
repo forall -c command例:$ repo forall -c git status #等同 repo status$ repo forall -c git clean -df #清除整個(gè)repo新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注