我有一个Bazel WORKSPACE
,我想从中导入一个外部Go git
存储库。我想知道最佳做法是否始终拥有Gazelle BUILD.bazel
文件,或者我的源WORKSPACE是否能以某种方式触发Gazelle生成文件,所以我不需要检查它们?如果我不是上游回购的所有者,后者就是这种情况。
答案 0 :(得分:3)
外部git存储库是否是常规的Go repo?可以"去得到"建立吗?如果是这样,当前的最佳做法是在WORKSPACE文件中使用go_repository
。像这样:
load("@io_bazel_rules_go//go:def.bzl", "go_repository")
go_repository(
name = "org_golang_x_tools",
importpath = "golang.org/x/tools",
commit = "663269851cdddc898f963782f74ea574bcd5c814",
)
这将检查存储库并使用Gazelle生成内部构建文件。它还处理Go导入路径重定向。
如果存储库没有以这种方式干净地构建,您可以检查它,使用Gazelle的-experimental_flat
标志生成单个构建文件,根据需要进行修改,并将其与{一起使用{1}}或new_git_repository
。这个工作流程现在非常尴尬,我们计划在未来对其进行大量简化。