Git 存放區規則

您可以從 @bazel_tools//tools/build_defs/repo:git.bzl 載入下列函式。

複製外部 Git 存放區的規則。

git_repository

load("@bazel//tools/build_defs/repo:git.bzl", "git_repository")

git_repository(name, branch, build_file, build_file_content, canonical_id, commit, init_submodules,
               patch_args, patch_cmds, patch_cmds_win, patch_strip, patch_tool, patches,
               recursive_init_submodules, remote, remote_module_file_integrity,
               remote_module_file_urls, remote_patch_strip, remote_patches, shallow_since,
               sparse_checkout_file, sparse_checkout_patterns, strip_prefix, tag, verbose,
               workspace_file, workspace_file_content)

複製外部 Git 存放區。

複製 Git 存放區、查看指定的分支版本、標記或修訂版本,並提供其目標以供繫結。如果未指定分支、標記或提交,請簽出存放區的預設分支。此外,請一併判斷已簽出的提交 ID 和日期,並傳回含有參數的 dict,提供這項規則的可重現版本 (標記或分支不一定會提供)。

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 也可以 (例如 BUILD.new-repo-name,可與存放區的實際 BUILD 檔案區別)。

build_file_content 字串;選用

這個存放區的 BUILD 檔案內容。

canonical_id 字串;選用

下載檔案的標準 ID。 如果指定且不為空白,Bazel 就不會從快取中取得檔案,除非檔案是由具有相同標準 ID 的要求新增至快取。如未指定或空白,Bazel 預設會使用檔案的網址做為標準 ID。這有助於避免常見錯誤,也就是更新網址但未同時更新雜湊,導致建構作業在本機成功,但在快取中沒有該檔案的電腦上失敗。您可以使用 --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0 停用這項行為。

commit 字串;選用

要簽出的特定提交。必須指定一個分支、標記或提交。

init_submodules 布林值;選用

是否要複製存放區中的子模組。

patch_args 字串清單 (選用)

提供給修補工具的引數。預設為 -p0 (請參閱 `patch_strip` 屬性),但通常需要 -p1 才能處理 Git 產生的修補程式。如果指定多個 -p 引數,系統會採用最後一個引數。如果指定 -p 以外的引數,Bazel 會改用 patch 指令列工具,而非 Bazel 原生修補程式實作。如果回復使用修補程式指令列工具,且未指定 patch_tool 屬性,系統會使用 `patch`。

patch_cmds 字串清單 (選用)

修補程式套用後,要在 Linux/macOS 上套用的 Bash 指令序列。

patch_cmds_win 字串清單 (選用)

在 Windows 上套用修補程式後,要執行的 PowerShell 指令序列。如未設定這項屬性,系統會在 Windows 上執行 patch_cmds,這需要 Bash 二進位檔存在。

patch_strip 整數;選用

如果設為 `N`,這相當於在 `patch_args` 開頭插入 `-pN`。

patch_tool 字串;選用

要使用的 patch(1) 公用程式。如果指定這項屬性,Bazel 會使用指定的修補程式工具,而非 Bazel 原生的修補程式實作項目。

patches 標籤清單 (選用)

解壓縮封存檔後,要套用為修補程式的檔案清單。根據預設,這項規則會使用 Bazel 原生修補程式實作項目,但該項目不支援模糊比對和二進位修補程式。如果指定 `patch_tool` 屬性,或 `patch_args` 屬性中含有 `-p` 以外的引數,Bazel 就會改用修補指令列工具。

recursive_init_submodules 布林值;選用

是否要在存放區中以遞迴方式複製子模組。

remote 字串;必填

遠端 Git 存放區的 URI

remote_module_file_integrity 字串;選用

僅供內部使用。

remote_module_file_urls 字串清單 (選用)

僅供內部使用。

remote_patch_strip 整數;選用

要從遠端修補程式的檔案名稱中移除的前導斜線數量。

remote_patches 字典:字串 -> 字串;選用

修補程式檔案網址及其完整性值的對應表,會在複製存放區後套用,並在套用 `patches` 屬性的修補程式檔案前套用。這項功能使用 Bazel 原生修補程式實作,您可以透過 `remote_patch_strip` 指定修補程式剝除編號

shallow_since 字串;選用

選填日期,不得晚於指定的提交;如果指定標記或分支 (一律可使用 --depth=1 複製),則不允許使用這個引數。如果設定的日期接近指定提交內容,即使伺服器不支援任意提交內容的淺層擷取作業,您仍可淺層複製存放區。由於 git 的 --shallow-since 實作方式有錯誤,因此不建議使用這個屬性,否則可能會導致擷取失敗。

sparse_checkout_file 標籤 (選用)

這個檔案包含 .gitignore 樣式的模式,用於這個存放區中檔案的稀疏簽出。您可以指定 `sparse_checkout_patterns` 或 `sparse_checkout_file`,也可以都不指定,但不能同時指定兩者。

sparse_checkout_patterns 字串清單 (選用)

這個存放區中檔案的稀疏簽出模式序列。

strip_prefix 字串;選用

從解壓縮的檔案中移除的目錄前置字串。

tag 字串;選用

遠端存放區中的標記,必須指定一個分支、標記或提交。

verbose 布林值;選用
workspace_file 標籤 (選用)

無運算屬性,請勿使用。

workspace_file_content 字串;選用

無運算屬性,請勿使用。

環境變數

這項存放區規則依據下列環境變數:

  • BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID

new_git_repository

load("@bazel//tools/build_defs/repo:git.bzl", "new_git_repository")

new_git_repository(name, branch, build_file, build_file_content, canonical_id, commit,
                   init_submodules, patch_args, patch_cmds, patch_cmds_win, patch_strip, patch_tool,
                   patches, recursive_init_submodules, remote, remote_module_file_integrity,
                   remote_module_file_urls, remote_patch_strip, remote_patches, shallow_since,
                   sparse_checkout_file, sparse_checkout_patterns, strip_prefix, tag, verbose,
                   workspace_file, workspace_file_content)

複製外部 Git 存放區。

複製 Git 存放區、查看指定的分支版本、標記或修訂版本,並提供其目標以供繫結。如果未指定分支、標記或提交,請簽出存放區的預設分支。此外,請一併判斷已簽出的提交 ID 和日期,並傳回含有參數的 dict,提供這項規則的可重現版本 (標記或分支不一定會提供)。

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 也可以 (例如 BUILD.new-repo-name,可與存放區的實際 BUILD 檔案區別)。

build_file_content 字串;選用

這個存放區的 BUILD 檔案內容。

canonical_id 字串;選用

下載檔案的標準 ID。 如果指定且不為空白,Bazel 就不會從快取中取得檔案,除非檔案是由具有相同標準 ID 的要求新增至快取。如未指定或空白,Bazel 預設會使用檔案的網址做為標準 ID。這有助於避免常見錯誤,也就是更新網址但未同時更新雜湊,導致建構作業在本機成功,但在快取中沒有該檔案的電腦上失敗。您可以使用 --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0 停用這項行為。

commit 字串;選用

要簽出的特定提交。必須指定一個分支、標記或提交。

init_submodules 布林值;選用

是否要複製存放區中的子模組。

patch_args 字串清單 (選用)

提供給修補工具的引數。預設為 -p0 (請參閱 `patch_strip` 屬性),但通常需要 -p1 才能處理 Git 產生的修補程式。如果指定多個 -p 引數,系統會採用最後一個引數。如果指定 -p 以外的引數,Bazel 會改用 patch 指令列工具,而非 Bazel 原生修補程式實作。如果回復使用修補程式指令列工具,且未指定 patch_tool 屬性,系統會使用 `patch`。

patch_cmds 字串清單 (選用)

修補程式套用後,要在 Linux/macOS 上套用的 Bash 指令序列。

patch_cmds_win 字串清單 (選用)

在 Windows 上套用修補程式後,要執行的 PowerShell 指令序列。如未設定這項屬性,系統會在 Windows 上執行 patch_cmds,這需要 Bash 二進位檔存在。

patch_strip 整數;選用

如果設為 `N`,這相當於在 `patch_args` 開頭插入 `-pN`。

patch_tool 字串;選用

要使用的 patch(1) 公用程式。如果指定這項屬性,Bazel 會使用指定的修補程式工具,而非 Bazel 原生的修補程式實作項目。

patches 標籤清單 (選用)

解壓縮封存檔後,要套用為修補程式的檔案清單。根據預設,這項規則會使用 Bazel 原生修補程式實作項目,但該項目不支援模糊比對和二進位修補程式。如果指定 `patch_tool` 屬性,或 `patch_args` 屬性中含有 `-p` 以外的引數,Bazel 就會改用修補指令列工具。

recursive_init_submodules 布林值;選用

是否要在存放區中以遞迴方式複製子模組。

remote 字串;必填

遠端 Git 存放區的 URI

remote_module_file_integrity 字串;選用

僅供內部使用。

remote_module_file_urls 字串清單 (選用)

僅供內部使用。

remote_patch_strip 整數;選用

要從遠端修補程式的檔案名稱中移除的前導斜線數量。

remote_patches 字典:字串 -> 字串;選用

修補程式檔案網址及其完整性值的對應表,會在複製存放區後套用,並在套用 `patches` 屬性的修補程式檔案前套用。這項功能使用 Bazel 原生修補程式實作,您可以透過 `remote_patch_strip` 指定修補程式剝除編號

shallow_since 字串;選用

選填日期,不得晚於指定的提交;如果指定標記或分支 (一律可使用 --depth=1 複製),則不允許使用這個引數。如果設定的日期接近指定提交內容,即使伺服器不支援任意提交內容的淺層擷取作業,您仍可淺層複製存放區。由於 git 的 --shallow-since 實作方式有錯誤,因此不建議使用這個屬性,否則可能會導致擷取失敗。

sparse_checkout_file 標籤 (選用)

這個檔案包含 .gitignore 樣式的模式,用於這個存放區中檔案的稀疏簽出。您可以指定 `sparse_checkout_patterns` 或 `sparse_checkout_file`,也可以都不指定,但不能同時指定兩者。

sparse_checkout_patterns 字串清單 (選用)

這個存放區中檔案的稀疏簽出模式序列。

strip_prefix 字串;選用

從解壓縮的檔案中移除的目錄前置字串。

tag 字串;選用

遠端存放區中的標記,必須指定一個分支、標記或提交。

verbose 布林值;選用
workspace_file 標籤 (選用)

無運算屬性,請勿使用。

workspace_file_content 字串;選用

無運算屬性,請勿使用。

環境變數

這項存放區規則依據下列環境變數:

  • BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID