Subversion - FHEM Installation versionieren
Die eigene FHEM-installation mit Subversion versionieren. Der Vorteil, man kann jegliche Änderungen, ob Update oder Änderungen in den .cfgs, in den Logs nachvollziehen und zu beliebigen Versionsständen aller Files zurück springen.
ACHTUNG - Seite noch im Aufbau!!!
|
Installation / Konfiguration unter Ubuntu & Debian
Hier soll aufgezeigt werden, wie man relativ einfach seine FHEM-Installation versioniert.
Vorteil:
- zu beliebigen Versionen aller Files zurück springen
- im Log des Repository jede Änderung nachvollziehbar
- Files von entfernten Clients auschecken, bearbeiten und wieder einchecken
Benötigte Software
- als Betriebssystem ein Linux (zB. Ubuntu oder Debian)
- einen installierten FHEM Server
- Subversion
- ggf. Websvn
- ggf. Tortoisesvn als Windows Client
Subversion installieren
Installation
root@hostname:~# apt-get update root@hostname:~# apt-get install subversion
Autostart svnserve Deamon
root@hostname:~# cd /etc/init.d/ root@hostname:~# vi svnserve kopiere folgendes in die Datei "svnserve": svnserve -d Datei ausführbar machen und zu autostart defaults hinzufügen: root@hostname:~# cd /etc/init.d/ root@hostname:~# chmod +x svnserve root@hostname:~# update-rc.d svnserve defaults
Konfiguration / Versionieren der FHEM-Installation
Repository erstellen
root@hostname:~# mkdir /meinpfad/subversion/fhem root@hostname:~# svnadmin create /meinpfad/subversion/fhem
Benutzerrechte für Repository einrichten
root@hostname:~# vi /meinpfad/subversion/fhem/conf/svnserve.conf
folgende Zeilen einkomentieren: anon-access = none auth-access = write password-db = passwd
Benutzernamen und Passwörter erstellen:
root@hostname:~# vi /meinpfad/subversion/fhem/conf/passwd folgendes Zeilen ergänzen: meinbenutzername = meinpasswort
Versionierung der FHEM-Installation
root@hostname:~# service fhem stop root@hostname:~# mkdir /tmp/fhemcheckouttmp root@hostname:~# cd /tmp/fhemtmp ##auschecken des FHEM-Repositorys in ein tmp-Verzeichnis root@hostname:~# svn co file:///meinpfad/subversion/fhem/ ##kopieren aller FHEM-Dateien in das ausgecheckte FHEM Repository root@hostname:~# cp -Rap /opt/fhem/* /tmp/fhemtmp/fhem/. ##svn Status überprüfen alle nicht versionierten Dateien werden mit "?" gekennzeichnet root@hostname:~# svn status ## alle mit "?" gekennzeichnetten Dateien dem Repository hinzufügen root@hostname:~# svn add * ## alle hinzugefügten Dateien in das Repository einchecken und ein Kommentar ergänzen root@hostname:~# svn commit * root@hostname:~# svn update ## svn status überprüfen, wird nichts mehr angezeigt sind alle Dateien eingecheckt root@hostname:~# svn status
FHEM-Verzeichnis durch die Versionierten Dateien ersetzen:
root@hostname:~# cd /opt ##Backup des FHEM Verzeichnisses, falls etwas schief geht ;-) root@hostname:~# cp -Rap /opt/fhem/* /opt/fhem.bak/. ##FHEM Verzeichnis löschen root@hostname:~# rm -r /opt/fhem ##Versionierte FHEM-Installation nach /opt/ auschecken root@hostname:~# svn co file:///meinpfad/subversion/fhem/ ##svn update root@hostname:~# svn update ##svn status, wird nichts angezeigt ist alles eingecheckt root@hostname:~# svn status ##FHEM wieder starten, nun sollte alles funktionieren wie vorher root@hostname:~# service fhem start
Hat alles funktioniert und FHEM läuft wieder einwandfrei, wird jetzt noch ein wenig aufgeräumt:
root@hostname:~# rm -r /opt/fhem.bak root@hostname:~# rm -r /tmp/fhemtmp
"wichtigste" Syntax für SVN
- svn status
- svn commit
- svn add
- svn checkout
Anwendungsszenarien
von entferntem Client z.B. .cfgs bearbeiten:
Auf ClientPC (evtl. Windows) wird mit einem SVN-Client (zB. Tortoisesvn) das FHEM Repository ausgecheckt. Es werden beispielsweise an einigen .cfgs Änderungen vorgenommen und wieder in das Repository eingecheckt.
SVN-Pfad auf entferntem Server:
svn://server-ip/meinpfad/subversion/fhem
Nun wieder auf der Shell des FHEM Servers einloggen und folgendes ausführen um dort die Dateien zu aktuallisieren:
root@hostname:~# cd /opt/fhem ##svn update ausführen um die lokalen Dateien durch die neusten Versionen aus dem Repository zu ersetzen root@hostname:~# svn update ##Sollten Dateirechte nicht ordnungsgemäß übernommen werden bei den geupdateten Dateien, schafft folgendes abhilfe: root@hostname:~# chown -r fhem:root /opt/fhem
in FHEMWEB geänderte Dateien z.B. .cfgs in das Repository einchecken
Nun wieder auf der Shell des FHEM Servers einloggen und folgendes ausführen um die aktuallisierten Dateien in das Repository einzuchecken:
root@hostname:~# cd /opt/fhem ##svn status ausführen, die geänderten Dateien werden mit einem vorangestellten M markiert root@hostname:~# svn status ##svn commit ausführen, um die geänderten Dateien in das Repository einzuchecken root@hostname:~# svn commit
neu erstellte Dateien oder über ein fhem update erhaltenne neue Dateien dem Repository hinzufügen:
Nun wieder auf der Shell des FHEM Servers einloggen und folgendes ausführen um die neuen Dateien dem Repository hinzuzufügen:
root@hostname:~# cd /opt/fhem ##svn status ausführen, die neuen Dateien werden mit einem vorangestellten ? markiert root@hostname:~# svn status ##svn add ausführen, um die neuen Dateien in das Repository einzuchecken root@hostname:~# svn add filename ##svn commit ausführen, um die neu hinzugefügten Dateien in das Repository einzuchecken root@hostname:~# svn commit
Ein- und Auschecken aus der FHEM Oberfläche (FHEMWEB)
mittels cmdalias
TEXT