====== Organisation der Repositories ====== Durch den vermehrten Einsatz von GitHub und Classrooms müssen wir unsere Repositories organisieren. ^ ^ Organisation ^ Einsatzzweck ^ | //Für Lehrpersonen// ||| | | bzz-fgict || Aktuell für alles, etwas chaotisch | | | teacher-python || Aufgaben, Leistungsbeurteilungen, Lösungen für M319, M320, ??? | | | teacher-java || Aufgaben, Leistungsbeurteilungen, Lösungen für M403, M404, M120, M320, M322, ??? | | | Modulbereich "Programmierung - Webapplikationen" || Aufgaben, Leistungsbeurteilungen, Lösungen für M133/M151 | | | BZZ-Commons || Skripts, Workflows, ... die wir weltweit freigeben | | //Für Vorlagen (Templates)// ||| | | templates-python | Vorlagen für Assignments im Classroom | | | templates-java | ::: | | //Für Lernende// ||| | | BZZ-2022 | Jahrgang 2022 (IA22a, IA22b, IM22a, IM22b, ...) | | | BZZ-2023 | Jahrgang 2023 (IA23a, IA23b, IM23a, IM23b, ...) | Ich beschreibe den Ablauf jeweils am Beispiel einer neuen Programmieraufgabe im Modul 319. Der Titel der Aufgabe lautet: "LU06.A01: Listen". Ich möchte diese Aufgabe bei den Klassen IM22a und IM22b einsetzen. ===== Ablauf ohne geheime Lösung ===== Bei dieser Variante wird nur ein Repository mit Branches für die Vorlage (''main'') und den Lösungsvorschlag (''solution'') genutzt. {{:howto:git:organisationen_01.png?400|}} ==== 1. Neues Repository erstellen ==== Ich erstelle ein neues Repository für diese Aufgabe (siehe [[:howto:pycharm:template]] ). Dieses Repository ist **public** definiert. Die Lernenden müssen Zugriff auf dieses Repository haben. * Organisation: templates-python * Repository: M319_LU06_A01_Lists * Branch: main Ich kennzeichne dieses Repository als "Template". ==== 2. Vorlage erstellen ==== Die Vorlage enthält alle Dateien und Funktionen, welche die Lernenden als Startpunkt erhalten: * Branch: **main** | lists.py || Dieses Skript sollen die Lernenden erstellen/ergänzen | | lists_test.py || Unit-Tests für die Lernenden | | .gitignore || | | requirements.txt || Libraries die importiert werden müssen | | .github || Ordner für die Workflows | | | classroom/autograding.json | Testfälle mit Bewertung | | | workflows/classroom.yml | Workflow zum Durchführen der Testfälle | ==== 3. Musterlösung erstellen ==== Die Musterlösung kann direkt im gleichen Repository als eigener Branch z.B. **solution** erstellt werden. Mein Repository ist nun vollständig. ===== Ablauf mit geheimer Lösung ===== {{:howto:git:organisationen.png?400|}} Bei dieser Variante haben die Lernenden keinen Zugriff auf den Branch "solution". Dieses Vorgehen ist vor allem bei Leistungsbeurteilungen sinnvoll. ==== 1. Neues Repository erstellen ==== Ich erstelle ein neues Repository für diese Aufgabe. Dieses Repository ist **internal** (oder private) definiert. Die Lernenden sollen keinen Zugriff auf dieses Repository erhalten. * Organisation: teacher-python * Repository: M319_LU06_A01_Lists * Branch: main ==== 2. Vorlage erstellen ==== Die Vorlage enthält alle Dateien und Funktionen, welche die Lernenden als Startpunkt erhalten: * Branch: **main** | lists.py || Dieses Skript sollen die Lernenden erstellen/ergänzen | | lists_test.py || Unit-Tests für die Lernenden | | .gitignore || | | requirements.txt || Libraries die importiert werden müssen | | .github || Ordner für die Workflows | | | classroom/autograding.json | Testfälle mit Bewertung | | | workflows/classroom.yml | Workflow zum Durchführen der Testfälle | ==== 3. Musterlösung erstellen ==== Die Musterlösung kann direkt im gleichen Repository als eigener Branch z.B. **solution** erstellt werden. Mein Repository ist nun vollständig. ==== 4. Kopie erstellen ==== Ich erstelle eine Kopie meines Repositories, wobei ich nur den **main**-Branch hochlade. Damit wird meine Lösung nicht übernommen wird. * Name: "templates-python/M319_LU06_A01_Lists" * Visibilty: "public" Dieses Repository kennzeichne ich als "Template". ===== Repository im Classroom einsetzen ===== Um ein Repository in einem Classroom zu verwenden, muss das Repository **public** sein oder in der gleichen Organisation wie der Classroom liegen. * Das Template für die Assignments wird in der Organisation "templates-python" angelegt. | * Für die Classrooms der Klassen "IM22a" und "IM22b" verwende ich die Organisation "BZZ-2022". ==== 1. Classroom erstellen ==== Falls noch kein Classroom für meine Klassen "IM22a", "IM22b" und das Modul "319" existiert, erstelle ich einen neuen Classroom in der Organisation "BZZ-2022". * Classroom-Name: "M319-2022" ==== 2. Assignment erstellen ==== Ich erstelle ein Assignment im Classroom "M319-2022" für die Aufgabe. * Assignment: "Aufgabe_M319_LU06_A01_Lists" * Template: "templates-python/M319_LU06_A01_Lists" Den Link zu diesem Assignment stelle ich den Lernenden zur Verfügung. ===== Anpassungen / Fehlerkorrekturen in der Vorlage ===== Anpassungen am Template werden in künftigen Repositories übernommen. Es gibt keinen Automatismus um bereits erstellte Repositories der Lernenden zu aktualisieren. ===== Housekeeping ===== Aufräumen von Organisationen / Repos / Benutzerkonten ==== Abschlussklassen ==== === Am Ende der Lehre == * Lernende auffordern Ihre Repos zu sichern * Repository in anderes Konto transferieren * UserId, Emailadresse ändern und Organisation verlassen === Nach Ablauf der Rekursfristen === * Organisation löschen * Classroom löschen