Co może być całkiem wykonalne:
- Utwórz 2 repozytoria: ucznia i nauczyciela.
- Sklonuj je na maszynie (można to zrobić za pomocą klienta Github)
- Państwo działa tylko w nauczyciela , nigdy dotknąć ucznia.
Więc twoja struktura katalogów składa się z 2 sklonowanych repozytoriów git:
- / student (z folderem .git)
- / nauczyciel (z folderem .git)
Umieszczasz znaczniki wokół „prywatnego” kodu w komentarzach dla twojego języka, na przykład javascript poniżej. Znaczniki wskazują, gdzie zaczyna się i kończy prywatny kod.
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
Następnie wykonaj prosty skrypt na komputerze lokalnym:
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);
});
Będzie: pobierał wszystkie twoje pliki i kopiował zawartość do / student (nadpisywanie) bez zaznaczonych prywatnych części kodu. Jeśli chcesz, możesz wstawić puste wiersze, ale może to podpowiedzieć, jakiego rodzaju rozwiązania oczekujesz.
Jest to przykładowy kod, który nie został przetestowany, więc prawdopodobnie będziesz musiał przeprowadzić debugowanie.
Teraz jedyne, co musisz zrobić, to zatwierdzić i wrzucić repozytorium ucznia, gdy jesteś zadowolony z wyników. Można to zrobić jednym kliknięciem podczas korzystania z klienta GitHub (dzięki czemu można dokonać szybkiego przeglądu wizualnego) lub po prostu zrobić to ręcznie w wierszu polecenia.
Repozytorium studenckie jest tylko repozytorium wyjściowym, więc zawsze będzie aktualne, dla studentów jasne jest, co się zmieniło, patrząc na zatwierdzenia (ponieważ pokazują tylko zmiany) i jest łatwe w obsłudze.
Kolejnym krokiem byłoby utworzenie haka zatwierdzającego git, który automatycznie uruchamia twój skrypt.
Edytuj: Zobacz, czy dokonałeś edycji swojego postu:
Oczywiście nie chcę, aby uczniowie mieli dostęp do rozwiązania (do czasu zakończenia zadania).
Podejrzewam, że jest jasne, ale musi być kompletne: wystarczy usunąć tagi wokół ukończonego ćwiczenia opublikuje odpowiedź w taki sam sposób, jak w przypadku normalnych aktualizacji ćwiczeń.