7

我按照这篇出色的文章http://toroid.org/ams/git-website-howto使用 Git 的 post-hooks 策略将代码部署到我的服务器。

我有一个如下所示的更新后文件:

GIT_WORK_TREE=/home/rajat/webapps/<project name> git checkout -f

每次我将代码推送到分支时,它都会自动部署。我现在要做的是让它支持多个分支,这样:

  1. git push origin master -----> 将代码部署到生产环境(/home/rajat/webapps/production)
  2. git push origin staging ----> 将代码部署到 staging (/home/rajat/webapps/staging)
  3. git push origin test ----> 部署代码进行测试 (/home/rajat/webapps/test)

为此,更新后挂钩需要了解更新了哪个分支。这可能吗 ?

4

2 回答 2

4

可以编写一个检测分支名称的更新后挂钩。
见灵感:

举个例子(所有这些钩子都基于git rev-parse):

#!/bin/bash
while read oldrev newrev refname
do
    branch=$(git rev-parse --symbolic --abbrev-ref $refname)
    if [ "master" == "$branch" ]; then
        # Do something
    fi
done
于 2013-09-14T18:03:06.550 回答
1

我通常做的是在我的网络服务器上的不同位置添加两个裸 git repos;一个用于测试,一个用于生产。两个 repos 都有用于签出到正确目录的后挂钩。然后我将两者都添加为我的(单个)本地存储库中的遥控器。

使用这种方法,我可以随时将任何分支推送到我的测试遥控器或生产遥控器。不确定这是否是正确的方法,但对我来说效果很好。

于 2013-12-03T01:57:37.037 回答