how to process files on a branch in post-receive hook in git

孤街醉人 提交于 2019-11-26 14:39:26

问题


I have a remote server on which I have created a bare git repository.

I would like to create a hook so that a given script is run on the latest code received on any given branch.

I know the post-receive hook can be used for it. However I want to do the following:

  1. Get hold of the branch on which code was received.
  2. Checkout the code in a temp location and run an operation on it.

How do I do the above?


回答1:


  • For 1), you have an example of reading the branch name (through stdin):
    "Not able to detect branch from Git post-receive hook"
  • For 2), you need to set GIT_WORK_TREE appropriately:
    "Managing website using git + post-receive hook: error pushing changes"

See both techniques combined in "Git post-receive for multiple remote branches and work-trees":

#!/bin/bash

while read oldrev newrev ref
do
  branch=`echo $ref | cut -d/ -f3`

  if [ "master" == "$branch" ]; then
    git --work-tree=/path/under/root/dir/live-site/ checkout -f $branch
    echo 'Changes pushed live.'
  fi

  if [ "dev" == "$branch" ]; then
    git --work-tree=/path/under/root/dir/dev-site/ checkout -f $branch
    echo 'Changes pushed to dev.'
  fi
done


来源:https://stackoverflow.com/questions/11322356/how-to-process-files-on-a-branch-in-post-receive-hook-in-git

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!