Verwendung von Git in Seminaren
Für Veranstaltungen mit Programmier-Übungen bietet es sich geradezu an, Git in Integrata-Seminaren einzusetzen. Die Vorteile liegen auf der Hand:
- Referenten haben Zugriff auf die Musterlösung in verschiedenen Ständen und können Verbesserungen bzw. Fehler einspielen.
- Referenten und Kunden haben für die Seminarinstallation einen simplen Zugriff für die Installation der Musterlösungen.
- Mit Hilfe von Tags können Versionsstände der Broschüre direkt mit Versionsständen der Übungen verknüpft werden.
- Die Teilnehmer des Seminars erhalten im Nachgang Zugriff auf die Musterlösungen. Auch hier können Fehler und Verbesserungen jederzeit gepflegt werden.
Repository-Organisation
Nachdem wir uns in Teil 1 mit den Grundlagen von Git und in Teil 2 mit dem Git-Plugin für Eclipse beschäftigt haben konzentrieren wir uns im Folgenden auf die Organisation des Repositories. Für jedes Seminar wird ein eigenes Repository angelegt, hier beispielsweise für das Seminar Docker und Java das Repository org.javacream.training.docker
:
Das Repository besteht aus drei Branches:
initial
kann vom Referenten als Ausgangsbasis des Praktikums benutzt werden.master
enthält die aktuellen Musterlösungen.develop
enthält alle Commits, die den aktuellen Stand des Praktikums definiert haben. Dieser Branch enthält somit alle Zwischenstände und soll die komplette Historie halten.
Neben den Branches existieren Tags, und zwar jeweils in Paaren. Der Name dieser Tags enthält die Versionsnummer der Broschüre:
<broschürenversion>
tagged den Stand der Musterlösung für diese Broschürenversion<broschürenversion>_initial
tagged die, eventuell leere Praktikumsumgebung dieser Broschürenversion.
Die relevanten Stände des Praktikums befinden sich damit in initial
und in master
bzw. genauer: In den Tags.
Arbeiten im Seminar
Die im Folgenden dargestellte Arbeitsweise verlangt nicht, dass die Teilnehmer Git kennen und verwenden müssen! Nur der Referent nutzt die Möglichkeiten des Versionsverwaltungssystems.
Zur Vorbereitung der Praktikumsumgebung cloned sich der Referent am Einfachsten das gesamte Repository lokal auf seinen Referentenrechner. Dann wird der Tag, der den initialen Stand zur aktuellen Broschüre enthält ausgechecked.
git checkout <broschürenversion>_initial
Alternativ kann über GitHub für einen Release auch eine Zip-Datei geladen werden.
Egal wie der initiale Stand erzeugt wurde: Dieser wird nun den Teilnehmern zur Verfügung gestellt.
Nun erzeugt sich der Referent an der Stelle dieses Tags einen neuen Branch, der für dieses Seminar verwendet werden soll. Als Namen verwende ich integrata_<startdatum_des_seminars>
. Auf diesem Branch wird nun die Musterlösung für das Seminar fortlaufend ergänzt und relevante Stände werden mit sprechenden Commits gesichert. Der Seminarlauf wird somit auf diesem Branch in nachvollziehbarer Form abgebildet. Die Sourcen für die Muster können dem master
-Branch entnommen werden. Zwischenstände findet der Referent bei Bedarf im develop
-Branch. Dieser enthält ja alle jemals als relevant erachteten Stände.
Am Ende des Seminars befindet sich der Seminar-Branch auf dem Stand der Lösung für die durchgeführte Schulung. Dieser Stand muss selbstverständlich nicht exakt der Musterlösung entsprechen! Ganz im Gegenteil kann der Referent hier eigene Lösungswege gehen, Vertiefungen einführen oder aber auch nachrangige Themen weglassen.
Ressourcen für die Teilnehmer
Am Ende des Seminars erhalten die Teilnehmer
- Den Ausgangsstand,
- die in der Broschüre verwendete Musterlösung, also den Stand mit dem korrespondierenden Tag,
- den Seminar-Stand.
Die ersten beiden werden als Zip-Dateien verteilt, letzteres sinnvoll als Git-Repository: Die Teilnehmer sollen ja bei Bedarf auch die Zwischenstände nachvollziehen können. Die hierfür notwendigen Kenntnisse von Git sollten vorausgesetzt werden können oder werden vom Referenten kurz vermittelt. Hierzu kann vom Teilnehmer beispielsweise Eclipse mit dem Git-Plugin benutzt werden, wie es im zweiten Teil dieser Serie beschrieben wurde.
Ressourcen für den Seminar-Verantwortlichen
Sind im Rahmen des Seminars Verbesserungen, kreative Ideen oder Fehlerbehebungen erfolgt, so wird der Seminar-Branch als Git-Repository dem Seminar-Verantwortlichen zur Verfügung gestellt. Dies erfolgt aktuell über einen Filetransfer per Mail oder ähnlichem.