Subversion - FHEM Installation versionieren

Aus FHEMWiki
Version vom 19. März 2017, 21:34 Uhr von Markusbloch (Diskussion | Beiträge) (Ersetzung von Forum-Links mit Vorlage Link2Forum)

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

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