git commit 可能会改变一些 workspace rules ,一些源文件,.bazelrc 等。如何让所有 Bazel 目标受到影响,从而需要在此类更改后重建和测试?
在 Buck 中,我们可以运行 buck targets --show-rulekey //...
查看两个 Git 修订版之间的所有规则键更改。 Bazel 中是否有任何等效的命令?
最佳答案
见 here :
# Under Apache 2.0 licence
COMMIT_RANGE=${COMMIT_RANGE:-$(git merge-base origin/master HEAD)".."}
# Go to the root of the repo
cd "$(git rev-parse --show-toplevel)"
# Get a list of the current files in package form by querying Bazel.
files=()
for file in $(git diff --name-only ${COMMIT_RANGE} ); do
files+=($(bazel query $file))
echo $(bazel query $file)
done
# Query for the associated buildables
buildables=$(bazel query \
--keep_going \
--noshow_progress \
"kind(.*_binary, rdeps(//..., set(${files[*]})))")
# Run the tests if there were results
if [[ ! -z $buildables ]]; then
echo "Building binaries"
bazel build $buildables
fi
tests=$(bazel query \
--keep_going \
--noshow_progress \
"kind(test, rdeps(//..., set(${files[*]}))) except attr('tags', 'manual', //...)")
# Run the tests if there were results
if [[ ! -z $tests ]]; then
echo "Running tests"
bazel test $tests
fi
也看看 bazel-diff .
关于git - 如何知道受 git commit 影响的所有 Bazel 目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55578905/