我试图根据推送的分支将git自动部署到不同的目录。 我有一个远程裸存储库,本地存储库和两个目录,我想要从本地到远程存储库的每次推送都要部署和更新数据。 我添加了更新后的挂钩:
#!/bin/sh
echo $1
echo "*UPDATE*"
case " $1 " in
*'refs/heads/develop'*)
GIT_WORK_TREE=/home/git/public_html/example_deploy_dev git checkout develop webroot
echo
echo "Dev was pulled"
echo
;;
esac
case " $1 " in
*'refs/heads/master'*)
GIT_WORK_TREE=/home/git/public_html/example_deploy git checkout master webroot
echo
echo "Master was pulled"
echo
;;
esac
它在第一个文件创建时部署得很好,但是当它在部署的目录中发生更改时,它不会更新它。我在哪里想念smth? 谢谢!
答案 0 :(得分:0)
post update hook的常用脚本是:
#! /bin/sh
update_master() {
GIT_WORK_TREE=/home/git/public_html/example_deploy_dev git checkout master -- webroot
}
update_develop() {
GIT_WORK_TREE=/home/git/public_html/example_deploy_dev git checkout develop -- webroot
}
for ref do
case "$ref" in
refs/heads/master) update_master;;
refs/heads/test) update_test;;
*) ;; # ignore other branches
esac
done
由于该钩子“采用可变数量的参数,每个参数都是实际更新的ref的名称。”,您不能仅依赖于$1
。