Repo 介紹

Repo是一個用Python語言開發的命令工作 ,可以更文件地進行多版本庫的管理。Repo是對Git進行了一定的封裝,簡化了對多個Git版本庫的管理。對於repo管理的任何一個版本庫,都需要使用Git命令進行操作。

Repo的使用過程大致如下:

  1. 運行repo init命令,克隆Android的一個清單庫。這個清單庫是通過XML技術建立的版本庫清單。
  2. 清單庫中的manifest.xml文件,列出了200多個版本庫的克隆方式。包括版本庫的地址和工作區地址的對應關係,以及分支的對應關係。
  3. 運行repo sync命令,開始同步,即分別克隆這200多個版本庫到本地的工作區中。
  4. 同時對200多個版本庫執行切換分支操作,切換到某個分支。

Repo和清單庫的初始化

  • 建立一個工作目錄,在工作目錄中執行repo init -u <url>,完成repo完整的下載及項目清單版本庫(manifest.git)的下載。
  • 命令repo init要完成如下操作:
  • 完成repo這一工作的完整下載,因爲在~/bin/下是repo不過是repo的引導程序。
  • 克隆android的清單庫manifest.git(地址來自於-u參數)。
  • 克隆的清單庫拉於.repo/manifest.git中,本地克隆到.repo/manifests。清單文件.repo/manifest.xml只是符號鏈接,它指向.repo/manifests/default.xml。
  • 詢問用戶的姓名和郵件地址,如果和Git默認的用戶名、郵件地址不同,則記錄在.repo/manifest.git庫的config文件中
  • 如果不想用默認的URL地址獲取repo,可以在repo init子命令中加–repo-url參數指定repo的版本庫地址。

Repo的命令集

每一個repo子命令都可以通過下面的命令獲得幫助:

repo help <command>

repo init命令

repo init子命令主要完成檢出清單版本庫(manifest.git),以及配置Git用戶名和郵件地址的工作。

repo sync命令

repo sync子命令用於參照清單文件克隆可同步版本庫。如果某個項目版本庫尚不存在,則執行repo sync命令相當於執行git clone。如果項目版本庫已經存在,則相當於執行下面的兩個命令:

  • git remote update:相當於對每一個remote源執行fetch操作。
  • git rebase origin/branch:針對當前分支的跟蹤分支執行rebase操作。

repo start命令

repo start子命令實際上是對git checkout -b命令的封裝。爲指定的項目或所有項目(若使用-all參數),以清單文件中爲項目認定的分支或里程碑爲基礎,創建特性分支。特性分支的名稱由命令的第一個參數指定。

repo start <newbranchname> [--all | <project>…]

repo status命令

repo status子命令實際上是對git diff-index、git diff-files命令的封裝,同時顯示暫存區的狀態和本地文件修改的狀態。

repo status [<project>…]

repo checkout命令

repo checkout子命令實際上是對git checkout命令的封裝。檢出之前由repo start創建的分支。

repo checkout <branchname> [<project>…]

repo branches命令

repo branches讀取各個項目的分支列表並彙總顯示。

repo branches [<project>…]

repo upload命令

repo upload相當於git push,但是又有很大的不同。執行repo upload不是將版本庫改動推送到克隆時的遠程服務器,而是推送到代碼審查服務器(Gerrit)的特殊引用上。代碼審覈服務器會對推送的提交進行特處理,將新的提交顯示爲一個待審覈的修改集,並進入代碼審查流程。只有當審覈通過後,纔會合併到正式的版本庫中。

用法如下:

repo upload [--re --cc] [<project>]...

參數:

-h, --help	顯示幫助信息。
-t		發送本地分支名稱到Gerrit代碼審覈服務器。
--re=REVIEWERS, --reviewers=REVIEWERS
                要求由指定的人員進行審覈。
-cc=CC	        同時發送通知到如下郵件地址。

如果發現上傳後的代碼有問題想重新修改,可以在本地繼續修改代碼,用git add把修改內容加到暫存區,用git commit –amend修改上一次提交,再用repo upload重新上傳修訂集。這樣上傳後不會產生新的提交,而是會在原有的提交中新加一個修訂集。

repo download命令

repo download命令主要用於代碼審覈者下載和評估提交的修訂。使用repo download命令實際上就是用git fetch獲取到對應項目的refs/changes/<changeid>/patchset>引用,並自動切換到對應的引用上。

repo download {project change [/patchset]}…

repo prune命令

repo prune子命令實際上是對git branch -d命令封裝,該命令用於掃描項目的各個分支,並刪除已經合併的分支。

repo prune [<project>…]

repo 遍歷整個項目

liangjiong.zhou 2013/12/31 03:12

repo forall 可以用來遍歷所有git倉庫。

repo forall <span class="re5">-c</span> <span class="kw3">command</span>

例:

$ repo forall <span class="re5">-c</span> <span class="kw2">git status</span>      <span class="co0">#等同 repo status</span>
$ repo forall <span class="re5">-c</span> <span class="kw2">git clean</span> <span class="re5">-dxf</span>  <span class="co0">#清除整個repo</span>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章