GIT网站部署

我正在尝试设置GIT将我的项目部署到基于分支的不同位置。 (我想这就是我想要做的事情)。
我目前的设置是这样的:本地开发机器运行Netbeans进行更改。 远程服务器托pipeGIT项目(运行apache的服务器相同) – 2个子站点存在test.FQDN.com和live.FQDN.com

我想要做的是有1个GIT项目(MyProject),并创build一个新的function分支。 对新function分支所做的任何提交都会推送到test.FQDN.com。 一旦function已经过testing,然后合并到主分支,它会推到live.FQDN.com。 我已经看过GIT的post-receive钩子,并且能够使用“git checkout -f”命令来拉动test.FQDN.com站点,但是只拉取主分支而不是新分支。 我没有任何资金来使用第三方来完成这项工作,并且希望保持在GIT中,但是如果有一个可以帮助控制的软件包的安装,那么对于Web服务器有完全的root权限。 任何build议将是伟大的!

编辑这里是我的邮件接收看起来像目前:

#!/bin/sh umask 002 cd /srv/git/projects/APP.git git push --mirror backupLocation:APP branch=$(git branch | grep "*" | sed "s/* //") if [ "$branch" == "master" ] then GIT_WORK_TREE=/srv/www/ssl_apps/APP git checkout -f else GIT_WORK_TREE=/srv/www/ssl_apps/APPtest git checkout -f fi 

我们的系统简而言之:

www.git-server.com

如果一个分支被推送,git post-receive hook会在静态文件/var/www/<branch>.version增加一个数字

在客户端服务器上(有多个服务器,每个服务器有多个安装):

cron脚本每分钟运行一次,它会检查每个分支的www.git-server.com/<branch>.version

如果版本增加,则更新:

 cd /var/<branch>.subsite; git pull --rebase 

一分钟延迟(最大)对我们的目的是确定的

您可以使用reset --hard <branchname>将您的工作副本置于detached-HEAD状态; 将后post-receive挂钩的后半部分更改为:

 if [ "$branch" == "master" ] then GIT_WORK_TREE=/srv/www/ssl_apps/APP git reset --hard $branch else GIT_WORK_TREE=/srv/www/ssl_apps/APPtest git reset --hard $branch fi