GIT 网站部署

GIT 网站部署

我正在尝试设置 GIT,以便根据分支将我的项目部署到不同的位置。(无论如何,我认为这就是我想要做的)。
我当前的设置是:本地开发机器运行 Netbeans 进行更改。托管 GIT 项目的远程服务器(运行 apache 的同一服务器)- 存在 2 个子站点,一个 test.FQDN.com 和一个 live.FQDN.com

我想要做的是拥有 1 个 GIT 项目 (MyProject) 并创建一个新的功能分支。对新功能分支所做的任何提交都将推送到 test.FQDN.com。一旦功能经过测试并合并到主分支,它将推送到 live.FQDN.com。我查看了 GIT 的接收后挂钩,并且能够使用“git checkout -f”命令来拉取 test.FQDN.com 网站,但是这只会拉取主分支而不是新的功能分支。我没有任何资金来使用第三方来实现这一点,并且更愿意留在 GIT 中,但如果有包可以安装来帮助控制这一点,则拥有对 Web 服务器的完全 root 访问权限。任何建议都很好!

编辑 以下是我目前收到的帖子:

#!/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

答案1

我们的系统简而言之:

www.git-server.com

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

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

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

如果版本增加了,则会进行更新:

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

就我们的目的而言,最多延迟一分钟就可以了

答案2

您可以使用reset --hard <branchname>将工作副本置于分离的 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

相关内容