Git挂钩更新后写入但不更新工作树

时间:2015-09-25 05:17:15

标签: git deployment githooks git-post-receive post-update

我试图根据推送的分支将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? 谢谢!

1 个答案:

答案 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