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