简体   繁体   中英

Using GIT to deploy website

I have followed this excellent write up http://toroid.org/ams/git-website-howto to deploy code to my server using Git's post-hooks strategy.

I have a post-update file that looks like this:

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

Everytime I push code to master branch, it gets auto deployed. What I want to do now is to make this support multiple branches, so that:

  1. git push origin master -----> deploys code to production (/home/rajat/webapps/production)
  2. git push origin staging ----> deploys code to staging (/home/rajat/webapps/staging)
  3. git push origin test ----> deploys code to test (/home/rajat/webapps/test)

For this, the post-update hook needs to understand which branch got updated. Is this possible ?

It is possible to write a post-update hook which detect the branch name.
See for inspiration:

As an example (all those hooks are based on 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

What I usually do is add two bare git repos in different locations on my web server; one for test, one for production. Both repos have post-hooks to checkout to the correct directory. Then I add both as remotes on my (single) local repo.

Using this method I can push any branch to my test remote or my production remote at any time. Not sure if this is the right way but it's worked well for me.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM