blob: 87c5d9f2921eb7a55553a20d80d812f12037d767 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001Synchronisation zwischen git-Repositories und Mud
2=================================================
3
4I. Push von aussen ins Mud.
5
6Am Ende es Pushes (im sog. post-update hook) wird ein Script gestartet,
7was folgendes macht:
8
91) Wenn fuer die Synchronisation mit dem Mud aktiv ist, wird mit der Mudlib
10 gesynct. Wenn nicht: Ende
112) Zunaechst wird in einem lokalen Clone des git-Repositories ein temporaerer
12 Branch zum Mergen von Aenderungen aus dem Mud angelegt (auto-mud-sync),
13 welcher bei dem Tag last-auto-mud-sync startet und dieser Branch
14 ausgecheckt.
153) Mit Hilfe von rsync werden alle Aenderungen aus der Mudlib hereinkopiert.
164) Wenn Aenderungen existieren, wird ein neuer Commit auf dem Branch gemacht.
175) Anschliessend wird Branch master ausgecheckt.
186) Wenn es Aenderungen gab, die in 4) commitet wurden, wird jetzt der Branch
19 auto-mud-sync mit diesem Commit in master gemergt.
20 Kommt es hierbei zu Konflikten, werden die _automatisch_ zugunsten des
21 Standes der git-Repositories aufgeloest, d.h. es gehen ggf. Aenderungen aus
22 dem Mud verloren. Es kann hierbei daher passieren, dass von 8 im Mud
23 geaenderten Zeilen nur 6 uebernommen werden, weil 2 Zeilen in Konflikt mit
24 den Aenderungen im git-Repository stehen. Daher ist es wichtig, das
25 Ergebnis dieses Merges im Nachhinein zu pruefen und ggf. zu korrigieren!
267) Falls es Aenderungen gab, wird jetzt der in 7) erstellte Merge-Commit ins
27 git-Repository gepusht.
288) Der jetzt gemergte Stand wird per rsync ins Mud kopiert.
299) Das Tag last-auto-mud-sync wird aktualisiert.
30
31
32II. Automatischer regelmaessiger Commit vom Mud
33
34Jeden Tag um 05:11 wird via cronjob und das Script ~/scripts/git-autocommit
35fuer jedes Repo in ~/git-repositories/ das unter I. beschriebene Script
36~/scripts/git-sync2lib ausgefuehrt.
37
38
39III. Import von Verzeichnissen aus dem Mud
40
41Zu jeder vollen Stunde wird in allen Verzeichnissen unter /d/, /p/ und
42/players/ die Datei 'git-mud-import' gesucht. Alle Verzeichnisse, in denen
43diese existiert, werden in gitolite importiert und gleichzeitig auch ein Clone
44in ~/git-repositories/ erstellt, d.h. dass die Synchronisationsmassnahmen
45unter I. und II. fuer dieses neue git-Repository aktiv sind.
46
47LETZTE AeNDERUNG:
4805.04.2011, Zesstra
49