Sure, I can give this a stab. post-commits are kind of a pain for a couple reason. First, when they run, they run as the dhapache user. When you checked out the repo, you likely did it as your user, correct? This is the first problem, as the files are owned by your user then and another user running an svn up on that directory will not work, it doesn’t have permissions. One way to get around this, is to delete all the files that you checked out before, so for example remove all files in /home/[user]/labs. Then change the permissions of the labs directory with:
chmod 777 /home/[user]/labs
Then edit post-commit, and put in:
svn co http://svn.yourdomain.com /home/[user]/labs --username=user --password=pass --non-interactive
Then do a commit (just a blank file or something, anything) and it should checkout the repo to the labs directory.
Then go back, edit post-commit again, and change the file to use:
svn up /home/[user]/labs --non-interactive
And do another test commit. It should now be working and you can do commits normally. Please be aware though that because the files were checked out and updated by dhapache, they are all owned by dhapache now. The --non-interactive is a good idea when calling svn from a script, since if it decides to be stupid and ask for a user or pass anyways, it will sit there for a long while and cause your commit to hang.
If you mind not being able to edit the files, you can put a:
chmod -R 777 /home/[user]/labs
at the end of the post-commit.
In reality, that is a huge pain because of permissions and ownership. The easier thing to do is just forget about post-commit, and instead checkout the repo as your user, and then setup a crontab job to run every couple hours and do an svn up. You can run it manually yourself if you really want to push the changes right away.
The only other alternatives to get the files owned by you is to make a C wrapper program, set it setgid and call that in post-commit, but it just gets more complex, requires compiling a C program everytime you want to change the command, etc.