I've been playing around with hooks for a while now, but I can't seem to get the post-receive hook to work the way I need it to.
I am trying to get the post-receive hook to create a zip folder and place it somewhere outside the git repository folders after I have pushed my changes to the repository.
You have a good example of deploying an zip through a post-receive hook in this article from Daniel Byrne:
The idea is to use git archive --format=zip:
#!/bin/bash
#
# A post commit hook that takes any updates pushed to the 'release' branch
# and creates a release directory for the new version under the webroot.
# Live site is then symlinked to this new release directory.
oldrev=$1
newrev=$2
branch=$3
# this is the root of the website (a symlink to a release directory)
webroot=/var/www/danielbyrne.net/www
if [ "$branch" == "release" ]
then
    # create a release directory to extract files into
    target=/var/www/danielbyrne.net/releases/$2/
    mkdir $target
    echo "Making target directory: $target"
    # create an archive in the webroot of danielbyrne.net
    /usr/bin/git archive master --format zip --output $target/deploy.zip
    echo "unzipping archive..."
    # extract the archive
    unzip -o -q $target/deploy.zip -d $target
    echo "removing deployment archive"
    # remove the archive file
    rm $target/deploy.zip
    echo "switching symbolic link to $target"
    # now switch the live site to point to the new release
    ln -nsf $target $webroot
    echo "done";
fi
来源:https://stackoverflow.com/questions/13931803/using-a-post-receive-hook-to-create-a-zip