在多重回购中使用Bazel
在多重回购环境中使用Bazel时,维护依赖关系一致性的最佳策略是什么在多重回购中使用Bazel,bazel,Bazel,在多重回购环境中使用Bazel时,维护依赖关系一致性的最佳策略是什么 例如,工作区(单个git回购)A、B、C都依赖于D。当D的版本发生变化时,我希望A、B和C都位于D的同一版本上,并且工作量最小。您可以在A、B和C的工作区文件中使用git_存储库规则: load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "D", remote = "https://g
例如,工作区(单个git回购)A、B、C都依赖于D。当D的版本发生变化时,我希望A、B和C都位于D的同一版本上,并且工作量最小。您可以在A、B和C的
工作区文件中使用git_存储库规则:
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
git_repository(
name = "D",
remote = "https://github.com/my_org/d",
branch = "master",
)
请注意,branch
属性设置为master
,而不是某些特定的提交。分支不必是主分支。它可以是任何一个分支
如果您想要一种复制构建的方法,
这可以通过使用bazel sync
命令来完成
详细说明了创建外部工作区的“快照”文件所需的步骤(resolved.bzl
)
您可以将其用作另一个构建工件,用于将来的调查,也可以对何时更新“指针”进行更多的控制通过调用bazel sync
和--experimental\u repository\u resolved\u file=resolved.bzl
调用外部工作区,这可能会有所帮助,在我的情况下,这将是包的特定版本。例如,分支不能指向master,而是指向特定的发布分支。我想知道的是,更新我所有的工作区,使之能够轻松地指向发布分支的同一个新版本。你可以输入任何你想要的分支名称。它不必是master
您也可以在starlark
中创建一个变量,因此所有git_存储库
目标都将指向同一个分支,您只需指定一次。是的,但只要我在分支上输入一个名称,就意味着我必须随时更新该名称。导入包含指向最新版本的变量的bzl文件似乎是一条可行之路。