以下函数可从 @bazel_tools//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_tool, patches, recursive_init_submodules, remote, 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 |
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, 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 |
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”,也可以同时指定二者,但不能同时指定二者。 |