On Tuesday 24 January 2006 18:50, Ryan Schmidt wrote:
> On Jan 24, 2006, at 18:26, Kalin KOZHUHAROV wrote:
> >> Is the repository on a different machine than the web server? Does
> >> the
> >> repository server have spare disk space? If so, then I would keep a
> >> complete working copy of the relevant subset of the repository on the
> >> repository server and update it whenever a relevant commit occurs.
> >> Then
> >> I would use rsync to synchronize this with the directory on the web
> >> server. rsync will only send the changes over the network, so it
> >> would
> >> be comparable to running svn up.
> >
> > It will be even faster, IMHO and you can exclude the .svn files
> > like this:
> >
> > $ alias R='rsync -Hazv --delete --delete-after --progress --
> > exclude=.svn/'
> > $ R working_dir/ webserver.domain.org:html/
> >
> > I am actually using sort of this but without the hook: not frequent
> > updates
> > so for now manually running the rsync is OK.
>
> Er... yes... I seem to have forgotten that part. Either use svn
> export on the working copy first, then rsync the export, or just
> exclude the .svn directories when rsyncing the working copy. The
> latter is probably quicker, because you don't have to wait for the
> export, and apparently easy, as shown above.
Thanks for your help! With your input I put together the following post-commit
hook which solved the problem for me.
Thanks!
Georg
#!/bin/sh
# The following hook is used for website management: Upon detecting a commit
# to a certain project, a working copy of that project is updated and then
# rsynced with the real webpage, omitting the .svn directories of the working
# copy.
REPOS="$1"
REV="$2"
WEBSITE_PROJECT_NAME="trunk/public_html"
WEBSITE_WORKING_COPY_PATH="/home/georg/Documents/public_html/"
WEBSITE_PATH="/import/htdocs/georg/public_html/"
/usr/bin/svnlook dirs-changed $REPOS -r $REV | grep $WEBSITE_PROJECT_NAME
> /dev/null
if [ $? = 0 ]; then
# The following update will fail ("svn: Working copy locked") if the
# commit that has triggered this hook was called from within
# $WEBSITE_WORKING_COPY_PATH. However, this doesn't matter because
# either way we have an up-to-date copy in $WEBSITE_WORKING_COPY_PATH.
/usr/bin/svn update $WEBSITE_WORKING_COPY_PATH
/usr/bin/rsync -a --delete --exclude=.svn/ $WEBSITE_WORKING_COPY_PATH
$WEBSITE_PATH
fi
--
Georg Wittenburg
http://page.mi.fu-berlin.de/~wittenbu/
- application/pgp-signature attachment: stored
Received on Sun Jan 29 18:18:12 2006