Morgengrauner Dokumentation
Dateipfad: /home/mud/mudlib/doc//wiz/gerrit-syncSynchronisation zwischen git-Repositories und Mud
=================================================
I. Push von aussen ins Mud.
Am Ende es Pushes wird ein Script gestartet, was folgendes macht:
1) Wenn fuer die Synchronisation mit dem Mud aktiv ist, wird mit der Mudlib
gesynct. Wenn nicht: Ende
2) Zunaechst wird in einem lokalen Clone des git-Repositories ein temporaerer
Branch zum Mergen von Aenderungen aus dem Mud angelegt (auto-mud-sync),
welcher bei dem Tag last-auto-mud-sync startet und dieser Branch
ausgecheckt.
3) Mit Hilfe von rsync werden alle Aenderungen aus der Mudlib hereinkopiert.
4) Wenn Aenderungen existieren, wird ein neuer Commit auf dem Branch gemacht.
5) Anschliessend wird Branch master ausgecheckt.
6) Wenn es Aenderungen gab, die in 4) commitet wurden, wird jetzt der Branch
auto-mud-sync mit diesem Commit in master gemergt.
Kommt es hierbei zu Konflikten, werden die _automatisch_ zugunsten des
Standes der git-Repositories aufgeloest, d.h. es gehen ggf. Aenderungen aus
dem Mud verloren. Es kann hierbei daher passieren, dass von 8 im Mud
geaenderten Zeilen nur 6 uebernommen werden, weil 2 Zeilen in Konflikt mit
den Aenderungen im git-Repository stehen. Daher ist es wichtig, das
Ergebnis dieses Merges im Nachhinein zu pruefen und ggf. zu korrigieren!
7) Falls es Aenderungen gab, wird jetzt der in 7) erstellte Merge-Commit ins
git-Repository gepusht.
8) Der jetzt gemergte Stand wird per rsync ins Mud kopiert.
9) Das Tag last-auto-mud-sync wird aktualisiert.
II. Automatischer regelmaessiger Commit vom Mud
Jeden Tag um 05:11 wird via cronjob und das Script ~/scripts/gerrit-autocommit
fuer jedes Repo in ~/gerrit/ das unter I. beschriebene Script
~/scripts/gerrit-sync2lib ausgefuehrt.
III. Import von Verzeichnissen aus dem Mud
Zu jeder vollen Stunde wird in allen Verzeichnissen unter /d/, /p/ und
/players/ die Datei 'gerrit-create-project' gesucht. Alle Verzeichnisse, in denen
diese existiert, werden in gerrit importiert und gleichzeitig auch ein Clone
in ~/gerrit/ erstellt, d.h. dass die Synchronisationsmassnahmen
unter I. und II. fuer dieses neue git-Repository aktiv sind.
zurück zur Übersicht