存放區可簡化多個存放區的工作,與 Git 相輔相成。對於 Repo 和 Git 之間的關係,請參閱 原始碼控管工具。如要 如要進一步瞭解存放區,請參閱 存放區讀我檔案
存放區的使用格式如下:
repo command options
選擇性元素會顯示在方括號 [] 中。例如,許多指令 project-list 做為引數。您可以指定 project-list 以名稱或字串清單的形式,列出 專案:
repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]
幫助
repo help
提供 repo
指令的說明。您也可以查看
指定指令做為選項的 Repo 指令:
repo help command
舉例來說,以下指令會產生說明和選項清單
執行 init
指令:
repo help init
或者,如果只想查看特定指令的可用選項清單,請執行:
repo command --help
例如:
repo init --help
初始
repo init -u url [options]
在目前的目錄中安裝存放區。這個指令會建立 .repo/
連結至存放區和原始碼的 Git 存放區
標準 Android 資訊清單檔案
選項:
-u
:指定要從中擷取資訊清單存放區的網址。這個 資訊清單位於https://android.googlesource.com/platform/manifest
。-m
:選取存放區中的資訊清單檔案。如果沒有資訊清單名稱 已選取,預設值為default.xml
。-b
:指定修訂版本,也就是特定的 manifest-branch。
同步
repo sync [project-list]
下載新的變更並更新本機環境中的工作檔案。
基本上就是在所有 Git 存放區完成 git fetch
如果執行
如果 repo sync
沒有引數,系統會同步處理所有專案的檔案。
執行 repo sync
的結果如下:
如果專案從未經過同步處理,則
repo sync
等同於git clone
;遠端存放區中的所有分支版本都會複製到本機 專案目錄如果專案先前已經過同步處理,則
repo sync
相同 改為:git remote update git rebase origin/branch
其中 branch 是本機目前的結帳分支版本 專案目錄如果本機分支並未追蹤遠端的分支版本 就無法同步處理該專案。
成功執行 repo sync
後,指定專案中的程式碼將
而且會與遠端存放區中的程式碼保持同步。
主要選項:
-c
:僅從伺服器擷取目前的資訊清單分支版本。-d
:將指定專案切換回資訊清單修訂版本。這個選項 如果專案位於主題分支版本中,但資訊清單修訂,就很有用 操作。-f
:即使專案無法同步處理,請繼續同步處理其他專案。threadcount
:針對以下項目拆分同步處理作業: 可以更快完成別讓機器負擔過重,只剩下 CPU 來處理其他任務如要查看可用的 CPU 數量,請先執行nproc --all
。-q
:抑制狀態訊息,安靜執行。-s
:同步至manifest-server
元素指定的已知良好版本 。
如需更多選項,請執行 repo help sync
。
上傳
repo upload [project-list]
將變更上傳至審查伺服器。針對指定的專案,存放區會比較 到上次存放區同步時更新到遠端分支版本的本機分支。 存放區會提示您選取一或多個尚未更新的分支版本 已上傳並送審。
所選分支的所有修訂版本都會透過 HTTPS 連線。您必須設定 HTTPS 密碼,才能啟用上傳功能 或授權。如要產生新的使用者名稱/密碼組合,透過 HTTPS 使用, 請前往 密碼產生器。
當 Gerrit 透過伺服器收到物件資料時,
提交變更,方便審查者針對特定修訂版本加註。
如要將多個查核點修訂版本合併為單一修訂版本,請使用 git rebase -i
再執行上傳
如果您執行 repo upload
時沒有使用引數,系統會搜尋所有專案:
即可上傳變更內容
如要在上傳後編輯變更內容,請使用 git rebase -i
等工具或
更新本機修訂版本的 git commit --amend
。編輯內容
完成:
- 確認更新的分支版本是目前簽出的分支版本。
- 使用
repo upload --replace PROJECT
開啟變更比對編輯器。 針對系列中的每個修訂版本,在括號中輸入 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 replacements # Insert change numbers in the brackets to add a new patch set. # To create a new change record, leave the brackets empty.
上傳完成後,變更會設定額外的修補程式。
如果只想上傳目前查看的 Git 分支版本,請使用旗標
--current-branch
(簡稱 --cbr
)。
差異比較
repo diff [project-list]
使用以下方式顯示修訂版本和工作樹狀結構間的待處理變更
git diff
。
下載
repo download target change
從審查系統下載指定變更,並移至 即可。
例如,下載
將 23823 變更為
platform/build
目錄:
repo download platform/build 23823
執行 repo sync
會移除使用 repo download
擷取的所有修訂版本。或是您
可以使用 git checkout m/main
查看遠端分支版本。
Forall
repo forall [project-list] -c command
這個外掛程式會在每項專案中執行指定的殼層指令。以下額外
環境變數由 repo forall
提供:
REPO_PROJECT
要設定為專案的唯一名稱。REPO_PATH
是相對於用戶端根目錄的路徑。REPO_REMOTE
是資訊清單中的遠端系統名稱。REPO_LREV
是資訊清單中的修訂版本名稱,經過翻譯為 本地追蹤分支。如果您需要傳送資訊清單,請使用這個變數 新增至本機執行的 Git 指令REPO_RREV
是資訊清單中的修訂版本名稱,與寫入的內容完全相同 。
選項:
-c
:要執行的指令和引數。系統會透過/bin/sh
及其之後的所有引數都會以殼層位置的形式傳遞 參數。-p
:在指定指令的輸出之前顯示專案標頭。這是 只要將管道繫結至指令的 stdin、stdout 和 sterr 串流,即可達到目標, 將所有輸出內容導入在單一網頁工具中顯示的連續串流 會很有幫助-v
:顯示指令寫入 stderr 的訊息。
Prune
repo prune [project-list]
刪減 (刪除) 已合併的主題。
start
repo start branch-name [project-list]
從 資訊清單。
BRANCH_NAME
引數會簡短說明所進行的變更
想製作出什麼都沒問題如果不知道
default
。
project-list
引數會指定哪些專案屬於這個主題
status
repo status [project-list]
比較工作樹狀結構與暫存區域 (索引) 和最近的修訂版本 在每個指定專案的這個分支版本 (HEAD) 中。顯示以下時間範圍內的摘要行: 每一個檔案內,都會有差異。
如果只要查看目前分支版本的狀態,請執行 repo status .
。狀態
會按專案列出資訊針對專案中的每個檔案,請以兩個字母表示
程式碼的使用方式。
第一欄中會出現大寫字母表示暫存區的差異 如上次提交狀態相同
Letter | 意義 | 說明 |
---|---|---|
- | 沒有變化 | HEAD 與索引中相同 |
A | 已新增 | 不在 HEAD 元素中 |
M | 上次修改日期 | 已在 HEAD 中修改 |
D | 已刪除 | 在 HEAD 中 (不在索引內) |
R | 已重新命名 | 不在 HEAD 中,但索引中路徑已變更 |
C | 已複製 | 不在 HEAD 內,正在從索引中的另一個項目複製 |
T | 模式已變更 | HEAD 和索引中的相同內容,已變更模式 |
更新 | 已取消合併 | HEAD 與索引發生衝突;需要解析度 |
在第二欄中,小寫英文字母代表工作目錄與 索引。
Letter | 意義 | 說明 |
---|---|---|
- | 新功能/不明 | 未編入索引,位於工作樹狀結構中 |
分鐘 | 上次修改日期 | 在索引中,工作樹狀結構中, |
d 鍵 | 已刪除 | 在索引中,而非工作樹狀結構 |
處理存放區錯誤
git commit -a # Commit local changes first so they aren't lost. repo start branch-name # Start the branch git reset --hard HEAD@{1} # And reset the branch so that it matches the commit before repo start repo upload .
執行指令時,系統會顯示 repo: error: no branches ready for upload
錯誤
「repo start
」並未在工作階段開始時執行。如要復原,請
修訂版本 ID,啟動新的分支版本,然後合併。