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, commit, init_submodules, patch_args,
               patch_cmds, patch_cmds_win, patch_strip, 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 (例如 BUILD.new-repo-name,這樣可以與存放區的實際 BUILD 檔案有所區別)。

build_file_content String;選用

此存放區的 BUILD 檔案內容。

commit String; 選用

要檢出的特定版本。必須指定分支、標記或提交的其中一個。

init_submodules 布林值;選用

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

patch_args 字串清單 (選用)

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

patch_cmds 字串清單 (選用)

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

patch_cmds_win 字串清單 (選用)

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

patch_strip 整數;選用

將其設為 `N` 時,相當於將 `-pN` 插入 `patch_args` 的開頭。

patch_tool String; 選用

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

patches 標籤清單 (選用)

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

recursive_init_submodules 布林值;選用

指出是否要在存放區中遞迴複製子模組。

remote 字串;必填

遠端 Git 存放區的 URI

repo_mapping 字典:字串 -> 字串 (選用)

僅限於 `WORKSPACE` 上下文:從本機存放區名稱轉換為全域存放區名稱的字典。這樣就能控管這個存放區依附元件的依附元件解析工作區。舉例來說,如果項目為 `"@foo": "@bar"`,則表示此存放區在任何依附 `@foo` 的情況下 (例如依附 `@foo//some:target` 的情況),實際上應在全域宣告的 `@bar` (`@bar//some:target`) 中解析該依附元件。 `MODULE.bazel` 情境 (在模組擴充功能的實作函式中叫用存放區規則時) _不_支援此屬性。

shallow_since String;選用

可選日期,但不得晚於指定的版本;如果指定了標記或分支 (可隨時使用 --depth=1 進行複製),則不允許使用這個引數。設定與指定提交作業相近的日期,即使伺服器不支援任意提交作業的淺層擷取,也可能會允許淺層複製存放區。由於 git 的 --shallow-since 實作功能有錯誤,因此不建議使用這個屬性,因為這可能導致擷取失敗。

strip_prefix String;選用

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

tag String;選用

標記在遠端存放區中,以便檢出。必須指定分支、標記或提交的其中一個。

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

這個檔案會用於做為此存放區的 `WORKSPACE` 檔案。您可以指定 `workspace_file` 或 `workspace_file_content`,也可以兩者都不指定,但不能同時指定。

workspace_file_content String;選用

這個存放區的 WORKSPACE 檔案內容。您可以指定 `workspace_file` 或 `workspace_file_content`,也可以兩者都不指定,但不能同時指定。

new_git_repository

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

new_git_repository(name, branch, build_file, build_file_content, commit, init_submodules,
                   patch_args, patch_cmds, patch_cmds_win, patch_strip, 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 (例如 BUILD.new-repo-name,這樣可以與存放區的實際 BUILD 檔案有所區別)。

build_file_content String;選用

此存放區的 BUILD 檔案內容。

commit String; 選用

要檢出的特定版本。必須指定分支、標記或提交的其中一個。

init_submodules 布林值;選用

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

patch_args 字串清單 (選用)

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

patch_cmds 字串清單 (選用)

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

patch_cmds_win 字串清單 (選用)

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

patch_strip 整數;選用

將其設為 `N` 時,相當於將 `-pN` 插入 `patch_args` 的開頭。

patch_tool String; 選用

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

patches 標籤清單 (選用)

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

recursive_init_submodules 布林值;選用

指出是否要在存放區中遞迴複製子模組。

remote 字串;必填

遠端 Git 存放區的 URI

repo_mapping 字典:字串 -> 字串 (選用)

僅限於 `WORKSPACE` 上下文:從本機存放區名稱轉換為全域存放區名稱的字典。這樣就能控管此存放區依附元件的依附元件解析工作區。舉例來說,如果項目為 `"@foo": "@bar"`,表示此存放區每次依附 `@foo` 時 (例如依附 `@foo//some:target` 的依附元件),實際上應在全域宣告的 `@bar` (`@bar//some:target`) 中解析該依附元件。 `MODULE.bazel` 情境 (在模組擴充功能的實作函式中叫用存放區規則時) _不_支援此屬性。

shallow_since String;選用

可選日期,但不得晚於指定的版本;如果指定了標記或分支 (可隨時使用 --depth=1 進行複製),則不允許使用這個引數。設定與指定提交作業相近的日期,即使伺服器不支援任意提交作業的淺層擷取,也可能會允許淺層複製存放區。由於 git 的 --shallow-since 實作功能有錯誤,因此不建議使用這個屬性,因為這可能導致擷取失敗。

strip_prefix String;選用

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

tag String;選用

標記在遠端存放區中,以便檢出。必須指定分支、標記或提交的其中一個。

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

這個檔案會用於做為此存放區的 `WORKSPACE` 檔案。您可以指定 `workspace_file` 或 `workspace_file_content`,也可以兩者都不指定,但不能同時指定。

workspace_file_content String;選用

這個存放區的 WORKSPACE 檔案內容。您可以指定 `workspace_file` 或 `workspace_file_content`,也可以兩者都不指定,但不能同時指定。