Philipp Kolb .net --

philipp-kolb.net - Philipp Kolb Pforzheim: Projekte / HiFi / Beschallungs- und Lichttechnik / Photografie und mehr...

 


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