<> ----- = 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 [[UML-Gastsysteme| 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 [[attachment:svn-takeover.sh|/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 [[UML-Gastsysteme| 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 :)