MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | Synchronisation zwischen git-Repositories und Mud |
| 2 | ================================================= |
| 3 | |
| 4 | I. Push von aussen ins Mud. |
| 5 | |
| 6 | Am Ende es Pushes (im sog. post-update hook) wird ein Script gestartet, |
| 7 | was folgendes macht: |
| 8 | |
| 9 | 1) Wenn fuer die Synchronisation mit dem Mud aktiv ist, wird mit der Mudlib |
| 10 | gesynct. Wenn nicht: Ende |
| 11 | 2) 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. |
| 15 | 3) Mit Hilfe von rsync werden alle Aenderungen aus der Mudlib hereinkopiert. |
| 16 | 4) Wenn Aenderungen existieren, wird ein neuer Commit auf dem Branch gemacht. |
| 17 | 5) Anschliessend wird Branch master ausgecheckt. |
| 18 | 6) 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! |
| 26 | 7) Falls es Aenderungen gab, wird jetzt der in 7) erstellte Merge-Commit ins |
| 27 | git-Repository gepusht. |
| 28 | 8) Der jetzt gemergte Stand wird per rsync ins Mud kopiert. |
| 29 | 9) Das Tag last-auto-mud-sync wird aktualisiert. |
| 30 | |
| 31 | |
| 32 | II. Automatischer regelmaessiger Commit vom Mud |
| 33 | |
| 34 | Jeden Tag um 05:11 wird via cronjob und das Script ~/scripts/git-autocommit |
| 35 | fuer jedes Repo in ~/git-repositories/ das unter I. beschriebene Script |
| 36 | ~/scripts/git-sync2lib ausgefuehrt. |
| 37 | |
| 38 | |
| 39 | III. Import von Verzeichnissen aus dem Mud |
| 40 | |
| 41 | Zu jeder vollen Stunde wird in allen Verzeichnissen unter /d/, /p/ und |
| 42 | /players/ die Datei 'git-mud-import' gesucht. Alle Verzeichnisse, in denen |
| 43 | diese existiert, werden in gitolite importiert und gleichzeitig auch ein Clone |
| 44 | in ~/git-repositories/ erstellt, d.h. dass die Synchronisationsmassnahmen |
| 45 | unter I. und II. fuer dieses neue git-Repository aktiv sind. |
| 46 | |
| 47 | LETZTE AeNDERUNG: |
| 48 | 05.04.2011, Zesstra |
| 49 | |