Was könnte durchaus machbar sein:
- Erstellen Sie 2 Repositorys: Schüler und Lehrer.
- Klonen Sie sie auf Ihren Computer (kann mit dem Github-Client durchgeführt werden)
- Sie arbeiten nur als Lehrer , berühren niemals Schüler.
Ihre Verzeichnisstruktur besteht also aus 2 geklonten Git-Repos:
- / student (mit einem .git-Ordner)
- / Lehrer (mit einem .git Ordner)
Sie setzen Markierungen um den "privaten" Code in Kommentaren für Ihre Sprache, Beispiel Javascript unten. Die Markierungen geben an, wo der private Code beginnt und endet.
function sum(a, b) {
// -----------------------START
return a + b; // so this is what you expect from the student
// -----------------------END
}
console.log(sum(1,1)); // I expect 2 as a result of your homework
Erstellen Sie dann ein einfaches Skript auf Ihrem lokalen Computer:
files.forEach((fileContent, fileName) => {
let newFileContent = '';
let public = true;
fileContent.forEach((line) => {
switch(line) {
case '// -----------------------START':
public = false;
break;
case '// -----------------------END':
public = true;
break;
default:
if(public) {
newFileContent = newFileContent + line + "\n";
}
}
});
writeFile('../student/' + fileName, newFileContent);
});
Es wird: alle Ihre Dateien nehmen und den Inhalt ohne die privat markierten Teile des Codes nach / student kopieren (überschreiben). Wenn Sie möchten, können Sie dort leere Zeilen einfügen. Dies kann jedoch einen Hinweis darauf geben, welche Art von Lösung Sie erwarten.
Es ist ungetesteter Beispielcode, daher müssen Sie wahrscheinlich etwas debuggen.
Jetzt müssen Sie nur noch das Schüler-Repository festschreiben und verschieben, wenn Sie mit der Ausgabe zufrieden sind. Dies kann mit einem Klick erfolgen, wenn Sie den GitHub-Client verwenden (damit Sie eine schnelle visuelle Überprüfung durchführen können) oder einfach manuell über die Befehlszeile.
Das Schüler-Repo ist nur ein Ausgabe-Repository, damit es immer auf dem neuesten Stand bleibt. Den Schülern wird durch Betrachten der Commits klar, was sich geändert hat (da sie nur Änderungen anzeigen), und es ist einfach zu handhaben.
Ein weiterer Schritt wäre, einen Git-Commit-Hook zu erstellen, der Ihr Skript automatisch ausführt.
Bearbeiten: Wir sehen, dass Sie Ihren Beitrag bearbeitet haben:
Natürlich möchte ich nicht, dass die Schüler Zugriff auf die Lösung haben (bis die Aufgabe beendet ist).
Ich vermute, es ist klar, aber um vollständig zu sein: Entfernen Sie einfach die Tags um die fertige Übung, um die Antwort auf die gleiche Weise zu veröffentlichen, wie Sie es für normale Aktualisierungen der Übungen tun würden.