以下函数可以从 @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 和日期,并返回一个字典,其中包含提供此规则的可重现版本的参数(标记或分支不一定是)。
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_网址S_AS_DEFAULT_CANONICAL_ID=0 停用。 |
commit |
字符串;可选
要检出的特定提交。必须指定分支、标记或提交中的一个。 |
init_submodules |
布尔值;可选
是否克隆代码库中的子模块。 |
patch_args |
字符串列表;可选
提供给补丁工具的实参。默认为 -p0(请参阅 `patch_strip` 属性),但对于 Git 生成的补丁,通常需要 -p1。如果指定了多个 -p 实参,则最后一个实参将生效。如果指定了除 -p 之外的实参,Bazel 将回退为使用 patch 命令行工具,而不是 Bazel 原生补丁实现。回退到 patch 命令行工具且未指定 patch_tool 属性时,将使用 `patch`。 |
patch_cmds |
字符串列表;可选
在应用补丁后要在 Linux/Macos 上应用的一系列 Bash 命令。 |
patch_cmds_win |
字符串列表;可选
在应用补丁后要在 Windows 上应用的一系列 Powershell 命令。如果未设置此属性,patch_cmds 将在 Windows 上执行,这需要存在 Bash 二进制文件。 |
patch_strip |
整数;可选
设置为 `N` 时,这相当于在 `patch_args` 的开头插入 `-pN`。 |
patch_tool |
字符串;可选
要使用的 patch(1) 实用程序。如果指定了此属性,Bazel 将使用指定的补丁工具,而不是 Bazel 原生补丁实现。 |
patches |
标签列表;可选
在提取归档文件后要作为补丁应用的文件列表。默认情况下,它使用 Bazel 原生补丁实现,该实现不支持模糊匹配和二进制补丁,但如果指定了 `patch_tool` 属性或 `patch_args` 属性中存在除 `-p` 之外的实参,Bazel 将回退为使用 patch 命令行工具。 |
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 实现中存在 bug,因此不建议使用此属性,因为它可能会导致提取失败。 |
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 和日期,并返回一个字典,其中包含提供此规则的可重现版本的参数(标记或分支不一定是)。
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_网址S_AS_DEFAULT_CANONICAL_ID=0 停用。 |
commit |
字符串;可选
要检出的特定提交。必须指定分支、标记或提交中的一个。 |
init_submodules |
布尔值;可选
是否克隆代码库中的子模块。 |
patch_args |
字符串列表;可选
提供给补丁工具的实参。默认为 -p0(请参阅 `patch_strip` 属性),但对于 Git 生成的补丁,通常需要 -p1。如果指定了多个 -p 实参,则最后一个实参将生效。如果指定了除 -p 之外的实参,Bazel 将回退为使用 patch 命令行工具,而不是 Bazel 原生补丁实现。回退到 patch 命令行工具且未指定 patch_tool 属性时,将使用 `patch`。 |
patch_cmds |
字符串列表;可选
在应用补丁后要在 Linux/Macos 上应用的一系列 Bash 命令。 |
patch_cmds_win |
字符串列表;可选
在应用补丁后要在 Windows 上应用的一系列 Powershell 命令。如果未设置此属性,patch_cmds 将在 Windows 上执行,这需要存在 Bash 二进制文件。 |
patch_strip |
整数;可选
设置为 `N` 时,这相当于在 `patch_args` 的开头插入 `-pN`。 |
patch_tool |
字符串;可选
要使用的 patch(1) 实用程序。如果指定了此属性,Bazel 将使用指定的补丁工具,而不是 Bazel 原生补丁实现。 |
patches |
标签列表;可选
在提取归档文件后要作为补丁应用的文件列表。默认情况下,它使用 Bazel 原生补丁实现,该实现不支持模糊匹配和二进制补丁,但如果指定了 `patch_tool` 属性或 `patch_args` 属性中存在除 `-p` 之外的实参,Bazel 将回退为使用 patch 命令行工具。 |
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 实现中存在 bug,因此不建议使用此属性,因为它可能会导致提取失败。 |
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