原文地址
譯者:遠(yuǎn)方的自由
轉(zhuǎn)載請注明出處: http://blog.csdn.net/z2066411585
Repo使用形式如下:
repo <COMMAND> <OPTIONS>
可選元素顯示在[]中,例如,許多命令將項目列表作為參數(shù),你可以指定項目列表作為項目的本地源目錄的名稱列表或路徑列表
repo sync [<PROJECT0> <PROJECT1> ... <PROJECTN>]
repo sync [</PATH/TO/PROJECT0> ... </PATH/TO/PROJECTN>]
help
一旦安裝了repo,你可以通過運行以下命令的摘要來查找最新的文檔:
repo help
你可以通過repo tree 中運行下面命令來獲取有關(guān)任何命令的信息:
repo help <COMMAND>
例如,下面的命令產(chǎn)生一個描述和repo 的 init 參數(shù)選項列表,它初始化當(dāng)前目錄中的repo:
repo help init
init
repo init -u <URL> [<OPTIONS>]
當(dāng)前目錄中安裝Repo.將會創(chuàng)建一個.repo目錄,其中主要包含用于repo源代碼和標(biāo)準(zhǔn)android清單文件的git存儲庫. repo目錄還包含manifest.xml, 它是./repo/maninfests/目錄中所選清單的符號鏈接. 有關(guān)更新manifest的說明,請參閱manifest-format.txt.
選項:
-
-u:指定從檢索清單存儲庫的URL.常見的manifest可以在https://android.googlesource.com/platform/manifest找到 -
-m:選擇存儲庫中的清單文件.如果沒有選擇清單名稱,則默認(rèn)為default.xml -
-b:指定一個修訂,一個特定的manifest-branch.
注意:對于所有余下的Repo命令,當(dāng)前工作目錄必須是./repo的父目錄或父目錄的子目錄.
sync
下載新的更改并更新本地環(huán)境中的工作文件.如果你運行repo sync沒有任何參數(shù),它將同步所有項目的文件.
當(dāng)運行repo sync,這是發(fā)生了什么事:
- 如果項目從未同步過,那么
repo sync相當(dāng)于git clone. 遠(yuǎn)程倉庫中的所有分支復(fù)制到本地項目目錄中. - 如果項目已經(jīng)同步過一次,那么
repo sync相當(dāng)于:
git remote update
git rebase origin/<BRANCH>
- 其中
<BRANCH>是本地項目目錄中當(dāng)前檢出的分支.如果本地分支沒有跟蹤遠(yuǎn)程倉庫中的分支,那么項目不會發(fā)生同步. - 如果
git rebase操作導(dǎo)致合并沖突,你將需要使用正常的git命令(例如git rebase --continue)來解決沖突.
執(zhí)行repo sync成功后,指定項目中代碼與遠(yuǎn)程倉庫中代碼保持同步.
選項:
-
-d:將指定的項目切換到manifest修訂版.如果項目當(dāng)前位于主題分支上,但是暫時需要manifest修訂,則會有幫助.
--s:同步到由當(dāng)前清單中的manifest-server元素指定的已知好的構(gòu)建.
--f:即使項目無法同步,也要繼續(xù)同步其他項目.
upload
repo upload [<PROJECT_LIST>]
對于指定的項目,repo比較本地分支與上次repo sync期間更新的遠(yuǎn)程分支. Repo將提示你選擇一個或多個尚未上傳的分支進(jìn)行審查.選擇一個或多個分支后,所選分支上的所有提交將通過https連接傳送個gerrit.你需要配置https密碼才能啟用上傳授權(quán).請訪問Password Generator生成新的用戶名/密碼對,以便通過https使用.
當(dāng)gerrit通過服務(wù)器接受到對象數(shù)據(jù),它會將每個提交變成一個變化,以便審閱者可以單獨評論每個提交.將幾個checkpoint提交合并為一個提交,在運行repo上傳之前使用git rebase -i.
如果你運行repo upload沒有任何參數(shù),它將搜索所有項目的更改上傳.
在上傳之后對其進(jìn)行編輯修改,應(yīng)該使用像git rebase -i或git commit --amend來更新你的本地提交.編輯完成后:
- 確保更新的分支是當(dāng)前檢出的分支
- 對于系列中每個提交,在括號內(nèi)輸入gerrit改變id:
# Replacing from branch foo
[ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...
[ 2829 ] ec18b4ba Update proto client to support patch set replacments
# Insert change numbers in the brackets to add a new patch set.
# To create a new change record, leave the brackets empty.
上傳完成后,更改將會有一個額外的補(bǔ)丁集.
如果只想上傳當(dāng)前檢出的git分支,可以使用標(biāo)志--current-branch (or --cbr 簡寫).
diff
repo diff [<PROJECT_LIST>]
在使用git diff的提交和工作樹之間顯示了突出的變化.
download
repo download <TARGET> <CHANGE>
從審查系統(tǒng)中下載指定的更改,并使其在項目的本地工作目錄中可用.
例如,將 change 23823
下載到platform/build目錄中
repo download platform/build 23823
repo sync應(yīng)該有效刪除通過repo download檢索任何提交.或者,你可以檢出遠(yuǎn)程分支,例如:git checkout m/master.
注意:在Gerrit的網(wǎng)頁上發(fā)生變化時,以及由于全球所有服務(wù)器的復(fù)制延遲而導(dǎo)致所有用戶的repo download都能夠找到它時,會有輕微的鏡像延遲.
forall
repo forall [<PROJECT_LIST>] -c <COMMAND>
在每個項目中執(zhí)行給定的shell命令,以下附加環(huán)境變量可通過repo forall
-
REPO_PROJECT被設(shè)置為項目的唯一名稱 -
REPO_PATH是相對于客戶端根目錄的路徑 -
REPO_REMOTE是manifest中遠(yuǎn)程系統(tǒng)的名稱 -
REPO_LREV是manifest中的修訂名稱,翻譯為本地跟蹤分支.如果你需要將manifest修訂傳遞給本地執(zhí)行的git命令,則使用此方法. -
REPO_RREV是manifest中修訂的名稱,完全如manifest中所寫.
選項:
-
-c: 命令和參數(shù)來執(zhí)行,該命令通過/bin/sh和任何參數(shù)在作為shell位置參數(shù)傳遞之后進(jìn)行評估. -
-p: 在輸出指定的命令之前顯示項目標(biāo)題,這是通過管道綁定到命令stdin,stdout和sterr流實現(xiàn)的,并將所有輸出管道連接到一個連續(xù)的流中,該流將顯示在單個會話中. -
-v:顯示命令寫入stderr的消息
prune
repo prune [<PROJECT_LIST>]
修改(刪除) 已經(jīng)合并的主分支
start
repo start <BRANCH_NAME> [<PROJECT_LIST>]
從manifest中指定的修訂開始,開始一個新的開發(fā)分支.
<BRANCH_NAME> 參數(shù)應(yīng)該提供你正試圖對項目進(jìn)行更改的簡短說明. 如果你不知道,請考慮使用默認(rèn)名稱.
<PROJECT_LIST>指定哪些項目將參與這個主題分支
注意: 是當(dāng)前工作目錄中項目的有用縮寫
status
repo status [<PROJECT_LIST>]
將工作樹與臨時區(qū)域(索引)進(jìn)行比較,并在指定的每個項目中對該分支(HEAD)上的最近提交進(jìn)行比較,顯示這三個狀態(tài)之間存在差異的每個文件的摘要.
運行run status 只查看當(dāng)前分支的狀態(tài),狀態(tài)信息按項目列出.對于項目中的每個文件,使用兩個字母代碼;
在第一列中,大寫字母表示暫存區(qū)域與上次提交狀態(tài)的區(qū)別.
| 字母 | 含義 | 描述 |
|---|---|---|
| - | no changer | same in HEAD and index |
| A | added | not in HEAD, in index |
| M | modified | in HEAD, modified in index |
| D | deleted | in HEAD, not in index |
| R | renamed | not in HEAD, path changed in index |
| C | copied | not in HEAD, copied from another in index |
| T | mode changed | same content in HEAD and index, mode changed |
| U | unmerged | conflict between HEAD and index; resolution required |
在第二列中,小寫字母表示工作目錄與索引的不同之處.
| 字母 | 含義 | 描述 |
|---|---|---|
| - | new/unknown | not in index, in work tree |
| m | modified | in index, in work tree, modified |
| d | deleted | in index, not in work tree |