Repo 命令參考文檔

Repo 命令參考文檔

Repo 簡化了跨多個代碼庫運行的流程,與 Git 相輔相成。請參閱源代碼控制工具,瞭解有關 Repo 和 Git 之間關係的說明。如需詳細瞭解 Repo,請參閱 Repo README

使用 Repo 需遵循的格式如下:

repo command options

 

可選元素顯示在方括號 [ ] 中。例如,許多命令會用到項目列表 (project-list) 參數。項目列表可以是一個名稱列表,也可以是一個本地源代碼目錄的路徑列表:

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

 

如果您僅想查看可用選項的列表,請運行:

repo command --help

 

例如:

repo init --help

 

init

repo init -u url [options]

 

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

選項:

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

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

sync

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 是本地項目目錄中當前已檢出的分支。如果本地分支沒有在跟蹤遠程代碼庫中的分支,則項目不會發生任何同步。

  • 如果 Git rebase 操作導致合併衝突,請使用常規 Git 命令(例如 git rebase --continue)解決衝突。

repo sync 運行成功後,指定項目中的代碼即處於最新狀態,已與遠程代碼庫中的代碼同步。

下面是重要選項。要查看更多信息,請運行 repo help sync

  • -c:僅獲取服務器中的當前清單分支。

  • -d:將指定項目切換回清單修訂版本。如果項目當前屬於某個主題分支,但臨時需要清單修訂版本,則此選項會有所幫助。

  • -f:即使某個項目同步失敗,也繼續同步其他項目。

  • -jthreadcount:將同步操作拆分成多個線程,以更快地完成同步。切勿爲其他任務預留 CPU,這會使計算機超負荷運行。要查看可用 CPU 的數量,請先運行:nproc --all

  • -q:通過抑制狀態消息來確保運行過程安靜。

  • -s:同步到當前清單中的 manifest-server 元素指定的一個已知良好編譯版本。

upload

repo upload [project-list]

 

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

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

當 Gerrit 通過其服務器接收對象數據時,它會將每項提交轉變成一項更改,以便審覈者可以針對特定提交給出意見。要將幾項“檢查點”提交合併爲一項提交,請運行 git rebase -i 然後再運行 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 下載到您的 platform/build 目錄,請運行以下命令:

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 參數用於簡要說明您嘗試對項目進行的更改。如果您不知道,則不妨考慮使用名稱 default

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 已刪除 存在於索引中,但不存在於工作樹中
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章