我在 git 中有一个 LaTeX 项目,有一个 makefile。因此,基本上服务器必须执行以下操作:
git checkout master
make > logfile 2>&1
假设我将其推送到服务器上的 repo 中。
我可以使用 cron 作业来执行此操作,但这似乎有点偏离重点。通过 SSH 推送后,有没有什么方法可以启动此操作?
答案1
您可以使用 post-receive 钩子在本机 git 中执行此操作。由于您不应该推送到非裸仓库,因此您需要一个类似这样的脚本
#!/bin/sh
target="/tmp/math"
exec > "$target/$(date +%s)_$(uuidgen).log" 2>&1
mkdir -p "$target"
GIT_WORK_TREE="$target" git checkout -f
cd "$target"
make
将其放入hooks/post-receive
裸仓库中,一切就绪(请注意,这不会创建$TARGET_DIR
,您必须手动执行此操作)