下列函式可從 @bazel_tools//tools/build_defs/repo:git.bzl
載入。
複製外部 Git 存放區的規則。
git_repository
git_repository(name, branch, build_file, build_file_content, commit, init_submodules, patch_args, patch_cmds, patch_cmds_win, patch_tool, patches, recursive_init_submodules, remote, repo_mapping, shallow_since, strip_prefix, tag, verbose, workspace_file, workspace_file_content)
複製外部 Git 存放區。
複製 Git 存放區、檢查指定的標記或修訂版本,然後提供其目標供繫結使用。此外,也請確認修訂版本的 ID 和日期實際已簽出,並使用參數傳回字典,該參數提供此規則的可重現版本 (標記不一定)。
Bazel 會先嘗試僅針對指定的修訂版本執行淺層擷取。如果失敗原因 (通常是因為缺少伺服器支援),將退回存放區的完整擷取版本。
建議使用 http_archive
搭配 git_repository
。原因如下:
- Git 存放區規則依附於系統
git(1)
,HTTP 下載工具則建構在 Bazel 中,且沒有系統依附元件。 http_archive
支援將urls
清單做為鏡像,而git_repository
僅支援單一remote
。http_archive
適用於存放區快取,但不支援git_repository
。詳情請參閱 #5116。
屬性
name |
名稱;必填
此存放區的專屬名稱。 |
branch |
字串;選用 複製到遠端存放區的分支版本必須明確指定分支版本、標記或修訂版本。 |
build_file |
標籤;選用
要用做這個存放區 BUILD 檔案的檔案。這個屬性是絕對標籤 (使用「@//」做為主要存放區)。檔案不必命名為 BUILD,但可以是 (例如 BUILD.new-repo-name 這類名稱,有助於區分該檔案與存放區的實際 BUILD 檔案)。 |
build_file_content |
字串;選用 這個存放區的 BUILD 檔案內容。 |
commit |
字串;選用 。必須明確指定分支版本、標記或修訂版本。 |
init_submodules |
布林值;選用
是否要複製存放區中的子模組。 |
patch_args |
字串清單;選用 給修補工具的引數。預設值為 -p0,不過 Git 產生的修補程式通常須使用 -p1。如果指定多個 -p 引數,最後一個引數將生效。如果指定 -p 以外的引數,Bazel 會改回使用修補指令列工具,而不是 Bazel 原生修補程式實作。如未指定改回修補指令列工具,且未指定 Patch_tool 屬性,系統會使用「patch」。 |
patch_cmds |
字串清單;選用 套用修補程式後,要在 Linux/Macos 上套用的 Bash 指令序列。 |
patch_cmds_win |
字串清單;選用 套用修補程式後,要在 Windows 上套用的 Powershell 指令序列。如未設定這項屬性,系統將在 Windows 上執行 Patch_cmds 且需要 Bash 二進位檔。 |
patch_tool |
字串;選用 要使用的修補程式(1) 公用程式。如果已指定此屬性,Bazel 會使用指定的修補程式工具,而不是 Bazel 原生修補程式實作。 |
patches |
標籤清單;選用
擷取封存內容後,要套用為修補程式的檔案清單。根據預設,它採用的 Bazel 原生修補程式實作方式不支援模糊比對和二進位修補程式,但如果已指定「patch_tool」屬性,或「patch_args」屬性中有「-p」以外的引數,Bazel 就會改回使用修補指令列工具。 |
recursive_init_submodules |
布林值;選用
是否要以遞迴方式複製存放區中的子模組。 |
remote |
字串;必要
遠端 Git 存放區的 URI |
repo_mapping |
字典:字串 -> 字串;必要
從本機存放區名稱到全域存放區名稱的字典。這麼做可控管這個存放區依附元件的工作區依附元件解析功能。 舉例來說,`"@foo": "@bar"` 項目就宣告每當這個存放區依附於 `@foo` (例如 `@foo//some:target` 上的依附元件) 時,實際上應該可解析全域宣告的 `@bar` (`@bar//some:target`) 中的依附元件。 |
shallow_since |
字串;選用 這是選用日期,而不是在指定修訂版本之後;如果已指定標記或分支,則不允許使用引數 (此引數一律可以使用 --depth=1 複製)。如果將這類日期設為接近指定修訂版本的日期,即使伺服器不支援任意修訂版本的淺層擷取作業,系統仍會允許存放區的淺層複製作業。由於 Git 的 --shallow-since 實作發生錯誤,因此不建議使用這項屬性,以免擷取失敗。 |
strip_prefix |
字串;選用 要從擷取檔案中移除的目錄前置字串。 |
tag |
字串;選用 標記。必須明確指定分支版本、標記或修訂版本。 |
verbose |
布林值;選用 |
workspace_file |
標籤;選用
要做為這個存放區的「WORKSPACE」檔案使用的檔案。只能指定「workspace_file」或「workspace_file_content」的值,但不得同時指定兩者。 |
workspace_file_content |
字串;選用 這個存放區的 WORKSPACE 檔案內容。只能指定「workspace_file」或「workspace_file_content」的值,但不得同時指定兩者。 |
new_git_repository
new_git_repository(name, branch, build_file, build_file_content, commit, init_submodules, patch_args, patch_cmds, patch_cmds_win, patch_tool, patches, recursive_init_submodules, remote, repo_mapping, shallow_since, strip_prefix, tag, verbose, workspace_file, workspace_file_content)
複製外部 Git 存放區。
複製 Git 存放區、檢查指定的標記或修訂版本,然後提供其目標供繫結使用。此外,也請確認修訂版本的 ID 和日期實際已簽出,並使用參數傳回字典,該參數提供此規則的可重現版本 (標記不一定)。
Bazel 會先嘗試僅針對指定的修訂版本執行淺層擷取。如果失敗原因 (通常是因為缺少伺服器支援),將退回存放區的完整擷取版本。
建議使用 http_archive
搭配 git_repository
。原因如下:
- Git 存放區規則依附於系統
git(1)
,HTTP 下載工具則建構在 Bazel 中,且沒有系統依附元件。 http_archive
支援將urls
清單做為鏡像,而git_repository
僅支援單一remote
。http_archive
適用於存放區快取,但不支援git_repository
。詳情請參閱 #5116。
屬性
name |
名稱;必填
此存放區的專屬名稱。 |
branch |
字串;選用 複製到遠端存放區的分支版本必須明確指定分支版本、標記或修訂版本。 |
build_file |
標籤;選用
要用做這個存放區 BUILD 檔案的檔案。這個屬性是絕對標籤 (使用「@//」做為主要存放區)。檔案不必命名為 BUILD,但可以是 (例如 BUILD.new-repo-name 這類名稱,有助於區分該檔案與存放區的實際 BUILD 檔案)。 |
build_file_content |
字串;選用 這個存放區的 BUILD 檔案內容。 |
commit |
字串;選用 。必須明確指定分支版本、標記或修訂版本。 |
init_submodules |
布林值;選用
是否要複製存放區中的子模組。 |
patch_args |
字串清單;選用 給修補工具的引數。預設值為 -p0,不過 Git 產生的修補程式通常須使用 -p1。如果指定多個 -p 引數,最後一個引數將生效。如果指定 -p 以外的引數,Bazel 會改回使用修補指令列工具,而不是 Bazel 原生修補程式實作。如未指定改回修補指令列工具,且未指定 Patch_tool 屬性,系統會使用「patch」。 |
patch_cmds |
字串清單;選用 套用修補程式後,要在 Linux/Macos 上套用的 Bash 指令序列。 |
patch_cmds_win |
字串清單;選用 套用修補程式後,要在 Windows 上套用的 Powershell 指令序列。如未設定這項屬性,系統將在 Windows 上執行 Patch_cmds 且需要 Bash 二進位檔。 |
patch_tool |
字串;選用 要使用的修補程式(1) 公用程式。如果已指定此屬性,Bazel 會使用指定的修補程式工具,而不是 Bazel 原生修補程式實作。 |
patches |
標籤清單;選用
擷取封存內容後,要套用為修補程式的檔案清單。根據預設,它採用的 Bazel 原生修補程式實作方式不支援模糊比對和二進位修補程式,但如果已指定「patch_tool」屬性,或「patch_args」屬性中有「-p」以外的引數,Bazel 就會改回使用修補指令列工具。 |
recursive_init_submodules |
布林值;選用
是否要以遞迴方式複製存放區中的子模組。 |
remote |
字串;必要
遠端 Git 存放區的 URI |
repo_mapping |
字典:字串 -> 字串;必要
從本機存放區名稱到全域存放區名稱的字典。這麼做可控管這個存放區依附元件的工作區依附元件解析功能。 舉例來說,`"@foo": "@bar"` 項目就宣告每當這個存放區依附於 `@foo` (例如 `@foo//some:target` 上的依附元件) 時,實際上應該可解析全域宣告的 `@bar` (`@bar//some:target`) 中的依附元件。 |
shallow_since |
字串;選用 這是選用日期,而不是在指定修訂版本之後;如果已指定標記或分支,則不允許使用引數 (此引數一律可以使用 --depth=1 複製)。如果將這類日期設為接近指定修訂版本的日期,即使伺服器不支援任意修訂版本的淺層擷取作業,系統仍會允許存放區的淺層複製作業。由於 Git 的 --shallow-since 實作發生錯誤,因此不建議使用這項屬性,以免擷取失敗。 |
strip_prefix |
字串;選用 要從擷取檔案中移除的目錄前置字串。 |
tag |
字串;選用 標記。必須明確指定分支版本、標記或修訂版本。 |
verbose |
布林值;選用 |
workspace_file |
標籤;選用
要做為這個存放區的「WORKSPACE」檔案使用的檔案。只能指定「workspace_file」或「workspace_file_content」的值,但不得同時指定兩者。 |
workspace_file_content |
字串;選用 這個存放區的 WORKSPACE 檔案內容。只能指定「workspace_file」或「workspace_file_content」的值,但不得同時指定兩者。 |