SVN Htdocs automated checkout
Um statische Webseiten die mittels SVN Versionsverwaltet werden, bei Änderungen im tag automatisch auf dem Webserver zu veröffentlichen kann das nachfolgende bash Skript verwendet werden.
Vorraussetzung ist das das SVN Repository auf dem selben Server liegt.
Das Skript legt zugleich ein Log File an.
How-To
Es müssen die Pfade zum Repository und dem htdocs Ordner des Webservers angepasst werden.
Der Commit wird nur veröffentlicht wenn im Log Kommentar zusätzlich publish geschrieben wird.
#!/bin/sh REPOS="$1" REV="$2" TARGETBASEFOLDER="/var/www/html/" TARGETFOLDER="OrdnerInDemDieSeiteLiegt" LOGFILE=/home/svn/WebseitenRepo/hooks/webupdate.log echo "`date +%H:%M:%S` : Start... \n" >> $LOGFILE 2>&1 echo "`date +%H:%M:%S` : REPO: $REPOS REV: $REV \n" >> $LOGFILE 2>&1 # Prüfen ob ein TAG Commit vorliegt? RTNCHECK=$(svn log -r $REV "file://$REPOS") # Debug #echo $RTNCHECK case "$RTNCHECK" in *'publish'*) # publizieren... echo "`date +%H:%M:%S` : # pub command found... \n" >> $LOGFILE 2>&1 #move into the containing directory cd $TARGETBASEFOLDER #delete folder to checkout from svn again rm -rf $TARGETFOLDER #create the folder so that svn co can populate into it mkdir $TARGETFOLDER #checkout files from local svn CORESULT=$(svn checkout "file://$REPOS/tag" "$TARGETBASEFOLDER/$TARGETFOLDER") echo "`date +%H:%M:%S` : $CORESULT \n" >> $LOGFILE 2>&1 #svn Ordner löschen cd $TARGETFOLDER rm -rf ".svn" ;; *) # Do nothing ;; esac