Android中Repo 常用命令參考

原文地址
譯者:遠(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 -igit 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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,688評論 19 139
  • 開發(fā)中我們經(jīng)常會遇到這樣的情況:項目越來越大,一些通用的模塊我們希望將他抽離出來作為單獨的項目,以便其他項目也可以...
    feil0n9wan9閱讀 20,634評論 0 24
  • 《劉潤商學(xué)院》9.11 六頂思考帽,分別是‘’信息的白帽,價值的黃帽,感覺的紅帽,創(chuàng)造的綠帽,困難的黑帽,管理思維...
    臺一DDM路靜娟閱讀 242評論 0 0
  • 距離上次寫東西已經(jīng)過了好久,久到我的打字速度都變的異常慢了下來。 對于堅持寫東西,我一直抱有一個神圣的態(tài)度,我...
    春風(fēng)不改墻頭草閱讀 146評論 2 0
  • NSAttributedString 可以非常方便的實現(xiàn)文字排版和圖文混排功能. 共有21種效果(API), 本文...
    嘖嘖嘖_野獸閱讀 6,870評論 0 9

友情鏈接更多精彩內(nèi)容