Update des Blogs

Serendipity habe ich auf dieser Webseite heute aktualisiert, jetzt läuft hier Version 1.7.3.

Völlig entspannt habe ich das Update zunächst auf meinem Heimrechner in einem neuen git Branch getestet, dann per git auf den Webserver hochgeladen.

Ja, so einfach kann es gehen!

Von CVS zu Git

Ich bin tatsächlich im neuen Jahrtausend angekommen!
Jahrelang habe ich meine Projekte mit CVS verwaltet, weil ich es praktisch fand, die Versionshistorie einer jeden Datei zu kennen. Dennoch hatte CVS mehrere Nachteile, über die ich hier nicht schreiben will, da man sie mit ein wenig Recherche im Web finden kann.
Jedenfalls bin ich zu Git gewechselt und habe mir dann auch gleich Gitweb und Gitolite eingerichtet. Gitolite, weil ich schlichtweg zu faul bin, mir großartig Arbeit mit dem Anlegen von Repos zu machen.

Oh, hey, ich habe mir dann auch gleich ein Projekt eingerichtet, mit dem typischen Anwendungsfall: Update der Webseite aus dem Repository. Dazu habe ich ein wenig rumgesucht (Btw: Mit DuckDuckGo) und mir dann folgenden Hook (post-receive) gebastelt:

#!/bin/sh
echo "Processing $0..."
DIR="/www/webseite.domain/htdocs"
cd $DIR
git --work-tree="$DIR" --git-dir="$DIR/.git" pull origin master
find . -type f -exec chmod a+r "{}" \;
find ./* -type d -exec chmod a+rx "{}" \;

Dazu habe ich - als Benutzer "git" das Projekt per "git clone /pfad/zum/repository.git" ausgecheckt (Der Benutzer "git" muss natürllich Schreibrecht in diesem Verzeichnis haben). Sicherlich hätte ich das auch als Bennutzer "www-data" machen können, aber das war dieses Mal nur ein erster Test. Letztendllich war es wichtig, dass es generell funktioniert.
Ach ja: Die beiden find Befehle sind dazu da, um die Leserechte korrekt zu setzen (womit ich wieder beim Thema wäre, dass man besser als "www-data" auscheckt (wozu dieser wiederum in der Ggruppe "git" sein muss), wenn man diesen Webkram macht).

Na ja, jetzt führe ich einen Push auf dem Master aus und schwupps, ist die Webseite aktuell!