Re: post-update script to update wc - suggestions welcome
- From
Sam Vilain <sam@vilain.net>
- Date
- Jun 20, 2007, 07:03 UTC
- Message-ID
- <4678D13A.7090904@vilain.net>
- In-Reply-To
- <E1I0tZY-0001Uz-00@www.watts.utsl.gen.nz>
Sam Vilain wrote:
Show 10 quoted lines
> #!/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.
Show 42 quoted lines
> 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@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html