repo命令簡介

原文鏈接:https://source.android.com/setup/using-repo.html

Repo 命令簡介
使用 Repo 需遵循的格式如下:

repo <COMMAND> <OPTIONS>

可選元素顯示在方括號 [ ] 中。例如,許多命令會將項目列表用作參數。您可以爲項目指定項目列表,作爲名稱列表或本地源代碼目錄的路徑列表:

repo sync [<PROJECT0> <PROJECT1> ... <PROJECTN>]
repo sync [</PATH/TO/PROJECT0> ... </PATH/TO/PROJECTN>]

help

安裝 Repo 後,您可以通過運行以下命令找到最新文檔(開頭是包含所有命令的摘要):

repo help

您可以通過在 Repo 樹中運行以下命令來獲取有關某個命令的信息:

repo help <COMMAND>

例如,以下命令會生成 Repo init 參數的說明和選項列表,該參數會在當前目錄中初始化 Repo。(要了解詳情,請參閱 init。)

repo help init

init

repo init -u <URL> [<OPTIONS>]

在當前目錄中安裝 Repo。這會創建一個 .repo/ 目錄,其中包含用於 Repo 源代碼和標準 Android 清單文件的 Git 代碼庫。該 .repo/ 目錄中還包含 manifest.xml,這是一個指向 .repo/manifests/ 目錄中所選清單的符號鏈接。有關更新清單的說明,請參閱 manifest-format.txt。

選項:

  • -u:指定要從中檢索清單代碼庫的網址。您可以在 https://android.googlesource.com/platform/manifest 中找到常見清單
  • -m:在代碼庫中選擇清單文件。如果未選擇任何清單名稱,則會默認選擇 default.xml。
  • -b:指定修訂版本,即特定的清單分支。

注意:對於其餘的所有 Repo 命令,當前工作目錄必須是 .repo/ 的父目錄或相應父目錄的子目錄。

sync

repo sync [<PROJECT_LIST>]

下載新的更改並更新本地環境中的工作文件。如果您在未使用任何參數的情況下運行 repo sync,則該操作會同步所有項目的文件。

運行 repo sync 後,將出現以下情況:

  • 如果目標項目從未同步過,則 repo sync 相當於 git clone。遠程代碼庫中的所有分支都會複製到本地項目目錄中。

  • 如果目標項目已同步過,則 repo sync 相當於以下命令:

    git remote update
    git rebase origin/

其中 是本地項目目錄中當前已檢出的分支。如果本地分支沒有在跟蹤遠程代碼庫中的分支,則相應項目不會發生任何同步。

如果 git rebase 操作導致合併衝突,那麼您需要使用普通 Git 命令(例如 git rebase
–continue)來解決衝突。

repo sync 運行成功後,指定項目中的代碼會與遠程代碼庫中的代碼保持同步。

選項:

  • -d:將指定項目切換回清單修訂版本。如果項目當前屬於某個主題分支,但只是臨時需要清單修訂版本,則此選項會有所幫助。
  • -s:同步到當前清單中清單服務器元素指定的一個已知的良好版本。
  • -f:即使某個項目同步失敗,系統也會繼續同步其他項目。

upload

repo upload [<PROJECT_LIST>]

對於指定的項目,Repo 會將本地分支與最後一次 repo sync 時更新的遠程分支進行比較。Repo 會提示您選擇一個或多個尚未上傳以供審覈的分支。

您選擇一個或多個分支後,所選分支上的所有提交都會通過 HTTPS 連接傳輸到 Gerrit。您需要配置一個 HTTPS 密碼以啓用上傳授權。要生成新的用戶名/密碼對以用於 HTTPS 傳輸,請訪問密碼生成器。

當 Gerrit 通過其服務器接收對象數據時,它會將每項提交轉變成一項更改,以便審覈者可以單獨針對每項提交給出意見。要將幾項“檢查點”提交合併爲一項提交,請使用 git rebase -i,然後再運行 repo upload。

如果您在未使用任何參數的情況下運行 repo upload,則該操作會搜索所有項目中的更改以進行上傳。

要在更改上傳之後對其進行修改,您應該使用 git rebase -i 或 git commit --amend 等工具更新您的本地提交。修改完成之後,請執行以下操作:

進行覈對以確保更新後的分支是當前已檢出的分支。

對於相應系列中的每項提交,請在方括號內輸入 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.

上傳完成後,這些更改將擁有一個額外的補丁程序集。

如果您只希望上傳當前已檢出的 Git 分支,則可以使用標記 --current-branch (簡稱 --cbr)。

diff

repo diff [<PROJECT_LIST>]

使用 git diff 顯示提交與工作樹之間的明顯更改。

download

repo download <TARGET> <CHANGE>

從審覈系統中下載指定更改,並放在您項目的本地工作目錄中供使用。

例如,要將更改 23823 下載到您的平臺/編譯目錄,請運行以下命令:

repo download platform/build 23823

repo sync 應該可以有效移除通過 repo download 檢索到的任何提交。或者,您可以將遠程分支檢出,例如 git checkout m/master。

注意:由於全球的所有服務器均存在複製延遲,因此某項更改(位於 Gerrit 中)出現在網絡上的時間與所有用戶可通過 repo
download 找到此項更改的時間之間存在些許的鏡像延遲。

forall

repo forall [<PROJECT_LIST>] -c <COMMAND>

在每個項目中運行指定的 shell 命令。通過 repo forall 可使用下列額外的環境變量:

  • REPO_PROJECT 可設爲項目的具有唯一性的名稱。
  • REPO_PATH 是客戶端根目錄的相對路徑。
  • REPO_REMOTE 是清單中遠程系統的名稱。
  • REPO_LREV 是清單中修訂版本的名稱,已轉換爲本地跟蹤分支。如果您需要將清單修訂版本傳遞到某個本地運行的 Git
    命令,則可使用此變量。
  • REPO_RREV 是清單中修訂版本的名稱,與清單中顯示的名稱完全一致。

選項:

  • -c:要運行的命令和參數。此命令會通過 /bin/sh 進行求值,它之後的任何參數都將作爲 shell 位置參數傳遞。
  • -p:在指定命令輸出結果之前顯示項目標頭。這通過以下方式實現:將管道綁定到命令的 stdin、stdout 和 sterr 流,然後通過管道將所有輸出結果傳輸到一個頁面調度會話中顯示的連續流中。
  • -v:顯示該命令向 stderr 寫入的消息。

prune

repo prune [<PROJECT_LIST>]

刪減(刪除)已合併的主題。

start

repo start <BRANCH_NAME> [<PROJECT_LIST>]

從清單中指定的修訂版本開始,創建一個新的分支進行開發。

<BRANCH_NAME> 參數應簡要說明您嘗試對項目進行的更改。如果您不知道,則不妨考慮使用默認名稱。

<PROJECT_LIST> 指定了將參與此主題分支的項目。

注意:“.”是一個非常實用的簡寫形式,用來代表當前工作目錄中的項目。

status

repo status [<PROJECT_LIST>]

對於每個指定的項目,將工作樹與臨時區域(索引)以及此分支 (HEAD) 上的最近一次提交進行比較。在這三種狀態存在差異之處顯示每個文件的摘要行。

要僅查看當前分支的狀態,請運行 repo status。系統會按項目列出狀態信息。對於項目中的每個文件,系統使用兩個字母的代碼來表示:

在第一列中,大寫字母表示臨時區域與上次提交狀態之間的不同之處。

字母 含義 說明
- 無更改 HEAD 與索引中相同
A 已添加 不存在於 HEAD 中,但存在於索引中
M 已修改 存在於 HEAD 中,但索引中的文件已修改
D 已刪除 存在於 HEAD 中,但不存在於索引中
R 已重命名 不存在於 HEAD 中,但索引中的文件的路徑已更改
C 已複製 不存在於 HEAD 中,已從索引中的另一個文件複製
T 模式已更改 HEAD 與索引中的內容相同,但模式已更改
U 未合併 HEAD 與索引之間存在衝突;需要解決方案

在第二列中,小寫字母表示工作目錄與索引之間的不同之處。

字母 含義 說明
- 新/未知 不存在於索引中,但存在於工作樹中
m 已修改 存在於索引中,也存在於工作樹中(但已修改)
d 已刪除 存在於索引中,不存在於工作樹中
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章