我有一个用于 TypeScript 项目的脚本,可确保我的代码在我将其推送到远程之前编译:
simple_git_push_typescript(){
(
set -e
top_level="$(git rev-parse --show-toplevel)"
if [[ "$cm_ignore_tsc" != 'yes' ]]; then
if [[ -f "$top_level/tsconfig.json" ]]; then
(cd "$top_level" && tsc) || { echo 'Could not compile with tsc. Did not push. Use "cm_ignore_tsc=yes" to override.'; exit 1; }
fi
fi
git add -A
if [[ "$cm_force_commit" == 'yes' ]]; then
git commit --allow-empty -am "${1-tmp}"
else
git commit -am "${1-tmp}" || echo 'Could not create new commit.';
fi
git push
)
}
当我在一天结束时或在拉取请求之前将代码推送到我的功能分支时,该脚本工作得非常好——它有助于防止不必要的提交,但也使它变得容易。
使用 Go,我只想在将 go 项目推送到远程之前检查所有内容是否编译。
simple_git_push_go(){
(
set -e
top_level="$(git rev-parse --show-toplevel)"
(cd "$top_level" && go build -o '/dev/null' .) # ?
# ...
)
}
Go build 是检查整个项目编译的最佳选择,还是查找所有 go 包并编译每个包的更通用方法?我想对于有多个未链接在一起的包的项目,那么您将不得不遍历每个包并分别编译它们?