Moodle aktuell halten mit Git 3a 1 2 3b 3c 4c
Vorstellung Andreas Grabs Softwareentwickler Seit 2010 Moodle Core- Entwickler Freier Mitarbeiter eledia GmbH
Inhalt Allgemeines Allgmeine Vorteile Vorteile in Bezug zur Moodle- Administration Git Grundlagen Moodle aktualisieren Verwalten von Moodle-Anpassungen Änderungen ermitteln Einige Probleme
Allgemeines Entwickelt durch Linus Torwalds seit 2005 als Alternative zum kommerziellen BitKeeper Die Bedienung ist im Vergleich zu CVS und SVN einfacher, trotz umfangreicherer Möglichkeiten Dezentral/verteilt (CVS und SVN sind zentral ausgerichtet)
Allgemeine Vorteile im Überblick Dezentral Einfache Befehle bei großem Funktionsumfang Hohe Verarbeitungsgeschwindigkeit Es wird meistens offline gearbeitet
Vorteile Moodle-Administration Das System kann leicht auf dem aktuellsten Stand gehalten werden (weekly releases). Es müssen nur die Änderungen geladen werden. Eigene Erweiterungen und Code- Anpassungen lassen sich leichter pflegen.
Vorteile Moodle-Administration Es gibt eine Historie über die eigenen Anpassungen. Noch nicht veröffentlichte Patches lassen sich leicht einpflegen.
Git Grundlagen History basiert auf Snapshots Jeder Snaphot ist eindeutig gekennzeichnet (SHA1-Hash) Jeder Snapshot hat i.d.r. einen Vorgänger (Ausnahme beim Merge) 1 2 3
Git Grundlagen Jeder Snapshot kann mehrere Nachfolger haben (Branching) 3a 1 2 3b 3c 4c
Git Grundlagen Branches in Moodle MOODLE_xy_STABLE MOODLE_23_STABLE master (aktueller Entwicklungsbranch)
Git Grundlagen Das Repository wird mit dem clone- Befehl geladen. Einfache Variante git clone <URL> cd moodle git checkout Fortgeschrittene Variante git clone -b <Branch> <URL> <Zielverzeichnis> Aus der URL wird automatisch ein Alias mit dem Namen origin erstellt
gesperrter Nicht sichtbarer Git Grundlagen Aktueller Stand nach dem clone (Git-Layer) Im Dateisystem sichtbare Dateien Staging Area Geänderte Dateien, die in das Repository hinein sollen Zur Zeit leer Git-Directory (Lokales Repository) Aus diesem kommen die Dateien zur Remote Area Gespiegelter Remotebereich master Komplettes Moodle- Repository mit allen Branches
gesperrter Nicht sichtbarer Git Grundlagen Aktueller Stand nach dem clone (Git-Layer) Sichtbarer, der die aktuell ausgecheckten Dateien enthält. Hier können Änderungen an den Dateien vorgenommen werden. Im Dateisystem sichtbare Dateien Staging Area Geänderte Dateien, die in das Repository hinein sollen Zur Zeit leer Git-Directory (Lokales Repository) Aus diesem kommen die Dateien zur Remote Area Gespiegelter Remotebereich master Komplettes Moodle- Repository mit allen Branches
gesperrter Nicht sichtbarer Git Grundlagen Aktueller Stand nach dem clone (Git-Layer) (virtueller ) Die Dateien, die später in das Git-Directory übernommen werden sollen (commit), werden hier aufgelistet. Im Dateisystem sichtbare Dateien Staging Area Geänderte Dateien, die in das Repository hinein sollen Zur Zeit leer Git-Directory (Lokales Repository) Aus diesem kommen die Dateien zur Remote Area Gespiegelter Remotebereich master Komplettes Moodle- Repository mit allen Branches
gesperrter Nicht sichtbarer Git Grundlagen Aktueller Stand nach dem clone (Git-Layer) Im Dateisystem sichtbare Dateien Staging Area Geänderte Dateien, die in das Repository hinein sollen Hier liegen alle im lokalen Git- Repository gespeicherten Änderungen. Dateien in diesem liegen Zur Zeit leer unter der Kontrolle von Git. Git-Directory (Lokales Repository) Aus diesem kommen die Dateien zur Remote Area Gespiegelter Remotebereich master Komplettes Moodle- Repository mit allen Branches
gesperrter Nicht sichtbarer Git Grundlagen Aktueller Stand nach dem clone (Git-Layer) Im Dateisystem sichtbare Dateien Staging Area Geänderte Dateien, die in das Repository hinein sollen Git-Directory (Lokales Repository) Aus diesem kommen die Dateien zur Remote Area Gespiegelter Remotebereich Zur Zeit leer Dieser kann nicht geändert werden. Er enthält das 1:1 Abbild des Moodle-Repositorys, von dem aus der master Clone erstellt wurde. Komplettes Moodle- Repository mit allen Branches
gesperrter Nicht sichtbarer Git Grundlagen Aktueller Stand nach dem clone (Git-Layer) Im Dateisystem sichtbare Dateien Staging Area Geänderte Dateien, die in das Repository hinein sollen Zur Zeit leer Git-Directory (Lokales Repository) Aus diesem kommen die Dateien zur Remote Area Gespiegelter Remotebereich master Komplettes Moodle- Repository mit allen Branches
Standard Moodle aktualisieren Variante 1 git pull Variante 2 git pull origin Variante 3 git fetch origin git merge origin/
gesperrter Nicht sichtbarer Standard Moodle aktualisieren Aktueller Status nach dem Aktualisieren Aktuelle Version von Moodle Staging Area (3) Automatischer Commit bei Erfolg Git-Directory (2) merge Remote Area Gespiegelter Remotebereich (1) fetch
gesperrter Nicht sichtbarer Moodle Anpassungen verwalten Eigene Erweiterungen Third Party Erweiterungen Eigene Core-Anpassungen 2a Staging Area Git-Directory Remote Area Gespiegelter Remotebereich 1 2 2a 1 2 3 Versionen sind verschieden
gesperrter Nicht sichtbarer Moodle Anpassungen verwalten Die verschiedenen Version werden mit einem Merge zusammengeführt 3a Staging Area Git-Directory 1 2 2a 3a Remote Area Gespiegelter Remotebereich 1 2 3 Merge
Änderungen ermitteln Diff zum original Branch von Moodle Alle hinzugefügten Dateien anzeigen Git diff --name-only --dif-filter=a origin/ Alle geänderten Core-Dateien anzeigen Git diff --name-only --dif-filter=m origin/
Probleme beim Merge Core-Dateien wurden an den gleichen Stellen geändert -> Konflikt und Abbruch des Mergings Auto-merging webservice/rest/locallib.php CONFLICT (content): Merge conflict in webservice/rest/locallib.php Removing mod/lesson/importpptlib.php Removing mod/lesson/importppt.php Automatic merge failed; fix conflicts and then commit the result. Abgebrochenen Merge zurücksetzen git reset --hard HEAD
Probleme beim Merge Update bringt andere Probleme in Moodle Erfolgten Merge zurücksetzen git reset --hard HEAD^
Kontakt eledia elearning im Dialog GmbH Am Treptower Park 75 12435 Berlin Telefon: 030-50 56 10 70 E-Mail: info@eledia.deweb: http://eledia.de http://moodle.de