3

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?

VonC
  • 1,262,500
  • 529
  • 4,410
  • 5,250
murtaza52
  • 46,887
  • 28
  • 84
  • 120

1 Answers1

9

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
Community
  • 1
  • 1
VonC
  • 1,262,500
  • 529
  • 4,410
  • 5,250