2

我在虚拟服务器上编写了以下接收后挂钩,以便它将存储库的开发和生产版本复制到运行每个版本的站点的开发和生产目录中。

以下是我写的post-receive hook。如何根据刚刚推送的分支有条件地刷新一个或另一个?

#!/bin/sh

if [ -n $GIT_DIR ]; then
    unset GIT_DIR
    cd ..
fi

echo "Deploying to dev"
git checkout develop
umask 002 && git reset --hard
cp -r /path/to/git/files/* /path/to/dev/site/

echo "Deploying to prod"
git checkout master
umask 002 && git reset --hard
cp -r /path/to/git/files/* /path/to/prod/site/
4

2 回答 2

1

接收后挂钩接收标准输入 3 个变量:旧版本、新版本和参考名称 - 这正是您所需要的。您可以通过以下方式改进您的脚本:

read oldrev newrev refname

并根据 refname 包含的内容(即:refs/heads/master)做一些 ifs。

于 2012-06-09T23:35:21.633 回答
0

您想遍历更新的分支并将任何更新部署develop到开发站点,并将任何更新部署master到生产站点,对吗?试试这个:http ://blog.ekynoxe.com/2011/10/22/git-post-receive-for-multiple-remote-branches-and-work-trees/

于 2012-06-10T00:43:11.930 回答