執行 repo sync
命令默認會同步 Android 源碼的全部 git 倉庫。若是想要單獨同步一個、或多個 git 倉庫,能夠提供一個、或多個 project 參數來指定要同步的 git 倉庫路徑。具體命令格式以下:android
關鍵是,如何知道某個 git 倉庫對應的 project 參數值是什麼,是 git 倉庫所在的子目錄名,仍是 git 倉庫在 repo 中保存的完整目錄路徑,或是其餘? git
通過實際測試發現,這裏提供的 project 參數值是基於當前 shell 的工做目錄尋址到目標 git 倉庫的目錄路徑,而不是 git 倉庫在 repo 中保存的完整目錄路徑,也不是 git 倉庫的子目錄名。shell
例如執行 repo status
命令打印了下面的 git 倉庫信息:bash
project android/packages/apps/Settings/ branch branch_m -m res/values-zh-rCN/strings.xml
能夠看到,這個 git 倉庫在 repo 中保存的完整路徑是 android/packages/apps/Settings/,所在的子目錄名是 Settings。app
咱們使用 cd
命令進入到 android 子目錄,測試以下。測試
1.在當前的 android 子目錄下執行 repo sync android/packages/apps/Settings/
命令,會執行報錯:code
$ repo sync android/packages/apps/Settings/ error: project android/packages/apps/Settings/ not found
即,當前 shell 的工做目錄在 android 子目錄下,把要同步的 git 倉庫在 repo 中的完整目錄路徑 android/packages/apps/Settings/ 做爲參數傳給 repo sync 命令,會執行報錯,基於這個路徑不能定位到要同步的 git 倉庫。orm
2.傳入 packages/apps/Settings/ 這個路徑能夠正常執行:xml
$ repo sync packages/apps/Settings/ Fetching project platform/packages/apps/Settings/
基於當前所在的 android 子目錄,能夠正常定位到所給 packages/apps/Settings/ 路徑下的 git 倉庫。ci
3.使用 cd
命令進入到 android/packages/apps/Settings/ 目錄下,而後執行 repo sync .
命令不會報錯:
$ repo sync . Fetching project platform/packages/apps/Settings/
基於這幾個測試結果能夠發現,repo sync 後面跟着的 project 參數值應該是基於當前 shell 工做目錄可以尋址到該 git 倉庫的目錄路徑,相似於 cd 命令的路徑尋址方式。
查看 repo help sync 命令打印的幫助信息,對 project 參數的說明以下,符合上面的驗證結果:
'repo sync' will synchronize all projects listed at the command line. Projects can be specified either by name, or by a relative or absolute path to the project's local directory. If no projects are specified, 'repo sync' will synchronize all projects listed in the manifest.
即,能夠提供 project name、或者提供可以尋址到該 project 本地目錄的相對路徑或絕對路徑來指定要同步的 project。
這裏說的 project name 並非 git 倉庫的子目錄名,具體值要在 repo 命令生成的 .repo/
目錄下查看。例如,查看 .repo/
目錄下的 manifest.xml 文件,有以下信息:
<project groups="p-fs-release,pdk-fs" name="platform/packages/apps/Settings" path="android/packages/apps/Settings" />
能夠看到,Settings 子目錄的 git 倉庫在 repo 中保存的完整路徑是 android/packages/apps/Settings,跟上面例子打印的信息相符。而它的 name 是 platform/packages/apps/Settings。
那麼只要當前 shell 的工做目錄是 Android 源碼的子目錄,無論在哪一個子目錄下,執行 repo sync platform/packages/apps/Settings
命令都會同步 Settings 這個 git 倉庫的代碼,這裏再也不舉例,能夠自行驗證。