可以从 @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 代码库,检出指定的标记或提交,并使其目标可供绑定。还要确定 提交实际签出及其日期,并返回一个包含参数的字典 提供此规则的可重现版本(即 是)。
Bazel 会先尝试仅浅提取指定提交。如果请求失败(通常是因为缺少服务器支持),就会回退到 执行代码库的完整提取操作
与 git_repository
相比,首选 http_archive
。
原因如下:
- Git 代码库规则依赖于系统
git(1)
,而 HTTP 下载程序是构建的 并且没有系统依赖项 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 |
String;可选
此代码库的 BUILD 文件的内容。 |
commit |
String;可选
要签出的特定提交必须指定分支、标记或提交中的一个(且只能指定其中一个)。 |
init_submodules |
布尔值;可选
是否克隆代码库中的子模块。 |
patch_args |
字符串列表;可选
提供给修补工具的参数。默认为 -p0,但通常需要为 git 生成的补丁使用 -p1。如果指定了多个 -p 参数,则最后一个参数将生效。如果指定了 -p 以外的参数,Bazel 将回退使用补丁命令行工具,而不是使用原生 Bazel 补丁实现。当回退到补丁命令行工具且未指定 patch_tool 属性时,系统将使用 `patch`。 |
patch_cmds |
字符串列表;可选
应用补丁后,要应用于 Linux/Macos 的一系列 Bash 命令。 |
patch_cmds_win |
字符串列表;可选
在应用补丁后,要在 Windows 上应用的一系列 PowerShell 命令。如果未设置此属性,patch_cmds 将在 Windows 上执行,这需要 Bash 二进制文件存在。 |
patch_tool |
String;可选
要使用的补丁(1) 实用程序。如果指定,Bazel 将使用指定的修补工具,而不是 Bazel 原生补丁程序实现。 |
patches |
标签列表;可选
在提取归档文件后要作为补丁应用的文件列表。默认情况下,它使用不支持模糊匹配和二进制补丁的 Bazel 原生补丁实现,但如果指定了 `patch_tool` 属性或 `patch_args` 属性中存在 `-p` 以外的参数,则 Bazel 会回退使用补丁命令行工具。 |
recursive_init_submodules |
布尔值;可选
是否在代码库中递归克隆子模块。 |
remote |
String;必需
远程 Git 代码库的 URI |
repo_mapping |
字典:String -> String;必需
从本地代码库名称到全局代码库名称的字典。这样,您就可以控制此代码库的依赖项的工作区依赖项解析。 例如,条目 `"@foo": "@bar"` 声明,每当此仓库依赖于 `@foo`(例如对 `@foo//some:target` 的依赖项)时,它实际上应在全局声明的 `@bar` (`@bar//some:target`) 中解析该依赖项。 |
shallow_since |
字符串;可选
可选日期,不得晚于指定提交;如果指定了标记或分支(始终可以使用 --depth=1 进行克隆),则不允许使用此参数。将此类日期设置为接近指定的提交日期可能允许对代码库进行浅层克隆,即使服务器不支持对任意提交内容的浅层提取也是如此。由于 Git 的 --shallow-since 实现中存在 bug,因此不建议使用此属性,因为它可能会导致提取失败。 |
strip_prefix |
字符串;可选
要从解压缩的文件中剥离的目录前缀。 |
tag |
字符串;可选
标记来签出。必须指定分支、标记或提交中的一个(且只能指定其中一个)。 |
verbose |
布尔值;可选 |
workspace_file |
标签;可选
要用作此代码库的“WORKSPACE”文件的文件。可以指定“workspace_file”或“workspace_file_content”,也可以不指定任何一个,但不能同时指定两者。 |
workspace_file_content |
String;可选
此代码库的 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 代码库,检出指定的标记或提交,并使其目标可供绑定。还要确定 提交实际签出及其日期,并返回一个包含参数的字典 提供此规则的可重现版本(即 是)。
Bazel 会先尝试仅浅提取指定提交。如果请求失败(通常是因为缺少服务器支持),就会回退到 执行代码库的完整提取操作
与 git_repository
相比,首选 http_archive
。
原因如下:
- Git 代码库规则依赖于系统
git(1)
,而 HTTP 下载程序是构建的 并且没有系统依赖项 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 |
String;可选
此代码库的 BUILD 文件的内容。 |
commit |
String;可选
要签出的特定提交必须指定分支、标记或提交中的一个(且只能指定其中一个)。 |
init_submodules |
布尔值;可选
是否克隆代码库中的子模块。 |
patch_args |
字符串列表;可选
提供给修补工具的参数。默认为 -p0,但通常需要为 git 生成的补丁使用 -p1。如果指定了多个 -p 参数,则最后一个参数将生效。如果指定了 -p 以外的参数,Bazel 将回退使用补丁命令行工具,而不是使用原生 Bazel 补丁实现。当回退到补丁命令行工具且未指定 patch_tool 属性时,系统将使用 `patch`。 |
patch_cmds |
字符串列表;可选
应用补丁后,要应用于 Linux/Macos 的一系列 Bash 命令。 |
patch_cmds_win |
字符串列表;可选
在应用补丁后,要在 Windows 上应用的一系列 PowerShell 命令。如果未设置此属性,patch_cmds 将在 Windows 上执行,这需要 Bash 二进制文件存在。 |
patch_tool |
String;可选
要使用的补丁(1) 实用程序。如果指定了此参数,Bazel 将使用指定的补丁工具,而不是 Bazel 原生补丁实现。 |
patches |
标签列表;可选
解压缩归档文件后要作为补丁应用的文件列表。默认情况下,它使用不支持模糊匹配和二进制补丁的 Bazel 原生补丁实现,但如果指定了 `patch_tool` 属性或 `patch_args` 属性中存在 `-p` 以外的参数,则 Bazel 会回退使用补丁命令行工具。 |
recursive_init_submodules |
布尔值;可选
是否在代码库中递归克隆子模块。 |
remote |
String;必需
远程 Git 代码库的 URI |
repo_mapping |
字典:String ->String;必需
一个字典,用于将本地代码库名称转换为全局代码库名称。这样,您就可以控制此代码库的依赖项的工作区依赖项解析。 例如,条目 `"@foo": "@bar"` 声明,每当此仓库依赖于 `@foo`(例如对 `@foo//some:target` 的依赖项)时,它实际上应在全局声明的 `@bar` (`@bar//some:target`) 中解析该依赖项。 |
shallow_since |
字符串;可选
可选日期,不得晚于指定提交;如果指定了标记或分支(始终可以使用 --depth=1 进行克隆),则不允许使用此参数。将此类日期设置为接近指定的提交日期可能允许对代码库进行浅层克隆,即使服务器不支持对任意提交内容的浅层提取也是如此。由于 Git 的 --shallow-since 实现中存在 bug,因此不建议使用此属性,因为它可能会导致提取失败。 |
strip_prefix |
字符串;可选
要从解压缩的文件中剥离的目录前缀。 |
tag |
字符串;可选
标记来签出。必须指定分支、标记或提交中的一个(且只能指定其中一个)。 |
verbose |
布尔值;可选 |
workspace_file |
标签;可选
要用作此代码库的 `WORKSPACE` 文件的文件。可以指定“workspace_file”或“workspace_file_content”,也可以不指定任何一个,但不能同时指定两者。 |
workspace_file_content |
String;可选
此代码库的 WORKSPACE 文件的内容。可以指定 `workspace_file` 或 `workspace_file_content`,也可以不指定这两者,但不能同时指定这两者。 |