Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Git hook (post-receive): update working tree on PUSH
#!/bin/sh
#
# This hook is placed in Bare repository and it updates Working tree whenever a PUSH
# is executed
#
# Assuming following file structure:
# .
# |-- myproject
# |-- myproject.git
# set WORKTREE=../myproject
#
# Where myproject.git - current bare repo and myproject - working directory
# To enable this hook, rename this file to "post-receive" and make sure it is executable
#
WORKTREE=../myproject
GITDIR=$WORKTREE.git
cd $WORKTREE
# update the working tree
git --work-tree=./ --git-dir=$GITDIR checkout -f
git --work-tree=./ --git-dir=$GITDIR clean -fd
# return to git directory
cd $GITDIR
# we have to read stdin in order to avoid
# sideband demutiplexer error
# more details here: http://bit.ly/PzbRwo
while read oldrev newrev refname
do
:
done

Djabx commented Mar 6, 2017 edited

Thank you, exactly what I needed !

One question, why do you use checkout -f followed by clean -fd and not reset --hard ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment