Inhaltsverzeichnis
Struktur des Servers
Die Repositories sind - der Einfachheit halber - nur per ssh verfügbar.
Beim Erstellen eines UML auf dem Host passierte bereits automatisch folgendes:
- ein rsa-Schlüssel für den root-Nutzer des neuen UML wurde erzeugt
ein Nutzer auf dem FaxeLogServer wurde angelegt (z.B.: svn-uml-webproxy)
der Schlüssel des UML-root-Nutzers wurde als authorized_key in den dazugehörigen Nutzer auf dem FaxeLogServer importiert
den Schlüssel wurde zusätzlich in den Nutzer svn-global auf dem FaxeLogServer eingefügt
Jeder root-Nutzer eines UML-Servers (und des Hosts) hat also Zugriff auf ein privates und ein öffentliches Repository.
Nutzung der Repositories
Allgemeines
Die Repositories der UML-Systeme haben folgenden Addressen:
svn+ssh://svn-uml-UMLNAME@logger/svn/uml-UMLNAME
svn+ssh://svn-global@logger/svn/global
svn+ssh://svn-host@logger/svn/host
Automatische Historie
In jedem User-Mode-System gibt es die cron-Datei /etc/cron.daily/cron-commit. Dort kannst du alle Verzeichnisse angeben (eins pro Zeile), die täglich automatisch in ihr Repository hochgeladen werden sollen. Standardmäßig sind alle Zeilen auskommentiert.
Übliche Kandidaten für die automatische Vergangenheitsverwaltung sind sicherlich /etc/ und /data/scripts/. Daten im globalen (im Gegensatz zum privaten) Repository sollten nicht automatisch hochgeladen werden, da sie von allen User-Mode-Servern geteilt werden.
Versionierung von Verzeichnissen
Bevor ein Verzeichnis derart verwaltet werden kann, muss du:
- es in das Repository importieren
die Versionsinformationen auschecken (die .svn-Verzeichnisse)
- die Versionsinformationen in das ursprüngliche Verzeichnis übertragen (somit werden die alten Dateirechte bewahrt)
Dafür gibt es natürlich ein Skript - es ist in jedem User-Mode-Server unter /scripts/svn-takeover.sh verfügbar.
Beispielsweise kannst du das Verzeichnis /data/etc nach /data-etc im privaten Repository des UML übertragen, indem du folgendes ausführst:
/scripts/svn-takeover.sh private /data/etc /data-etc
Der folgende Abschnitt zeigt dir, wie du dasselbe manuell erreichen kannst.
Beispiel: manuelle Versionierung von /etc/
Das folgende Beispiel bezieht sich auf das UML interim:
cd / svn import etc svn+ssh://svn-uml-interim@logger/svn/uml-interim/etc svn co svn+ssh://svn-uml-interim@logger/svn/uml-interim/etc /tmp/etc cd /tmp/etc find -type d -name .svn | while read a; do mv "$a" "/etc/$a"; done cd /; rm -r /tmp/etc
Mit dieser Vorgehensweise bleiben die Datei-Rechte unverändert.
Das globale Respository
Im globalen Repository befinden sich derzeit folgende Verzeichnisse:
- /scripts
Skripte für den Host und die User-Mode-Server - enstpricht üblicherweise dem Verzeichnis /scripts/'
Du kannst natürlich weitere hinzufügen. In dem Fall wäre es sicher ein Beweis löblicher Ordnungsliebe, sie hier ebenfalls zu dokumentieren