Sam Vilain wrote: > #!/bin/sh > # > # An example hook script to prepare a packed repository for use over > # dumb transports. > # > # To enable this hook, make this file executable by "chmod +x post-update". > > git-update-server-info > > ref=$1 In particular, if anyone can think of a clever and reliable way to detect whether the repository is bare or not (perhaps the presence of $GIT_DIR/index ?), then this could conceivably become the default example hook script, by making the below bit conditional on whether this looks like a non-bare repository. Sam. > active=`git-symbolic-ref HEAD` > if [ "$ref" = "$active" ] > then > echo "Pushing to checked out branch - updating working copy" >&2 > export GIT_DIR=`cd $GIT_DIR; pwd` > cd .. > success= > if git-diff-files > then > git-diff-index -z -R --name-status HEAD | perl -n0 -le \ > 'if ($z^=1) { > $status=$_; > } > else { > $filename=$_; > printf STDERR "$status\t$filename\n"; > if($status eq "D"){ > unlink($filename) > or die("unlink($filename) failed; $!") > } > }' && > git-reset --hard HEAD && success=1 > fi > if [ -z "$success" ] > then > ( > echo "Non-bare repository checkout is not clean - not updating it" > echo "However I AM going to update the index. Any in-progress commit" > echo "happening in that checkout will be thrown away, but on the bright" > echo "side this is probably the least confusing thing for us to do and" > echo "at least we're not throwing any files somebody has changed away" > git-reset --mixed HEAD > echo > echo "This is the new status of the upstream working copy:" > git-status > ) >&2 > fi > fi > - > To unsubscribe from this list: send the line "unsubscribe git" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html