Ce qui pourrait être tout à fait faisable:
- Créez 2 référentiels: étudiant et enseignant.
- Clonez-les sur votre machine (cela peut être fait avec le client Github)
- Vous travaillez uniquement en enseignant , ne touchez jamais l'élève.
Donc, votre structure de répertoire est composée de 2 repo git clonés:
- / étudiant (avec un dossier .git)
- / enseignant (avec un dossier .git)
Vous mettez des marqueurs autour du code "privé" dans les commentaires de votre langue, exemple javascript ci-dessous. Les marqueurs indiquent où commence et se termine le code privé.
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
Faites ensuite un script simple sur votre machine locale:
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);
});
Il: prendra tous vos fichiers et copiera le contenu dans / student (écrasement) sans les parties marquées privées du code. Si vous le souhaitez, vous pouvez y insérer des lignes vides, mais cela pourrait vous donner une idée du type de solution que vous attendez.
Il s'agit d'un exemple de code non testé, vous devrez donc probablement effectuer un débogage.
Maintenant, la seule chose que vous avez à faire est de valider et d'introduire le référentiel des étudiants lorsque vous êtes satisfait de la sortie. Cela peut être fait en un clic lors de l'utilisation du client GitHub (vous pouvez donc faire un examen visuel rapide) ou simplement le faire manuellement en ligne de commande.
Le repo des étudiants est uniquement un référentiel de sortie, il restera donc toujours à jour, il est clair pour les étudiants ce qui a changé en regardant les commits (car ils ne montrent que les changements) et c'est simple à gérer.
Une étape supplémentaire serait de créer un crochet de validation git qui exécute automatiquement votre script.
Modifier: voyez que vous avez modifié votre message:
Évidemment, je ne veux pas que les étudiants aient accès à la solution (jusqu'à ce que le travail soit terminé).
Je suppose que c'est clair mais pour être complet: il suffit de supprimer les balises autour de l'exercice terminé pour publier la réponse de la même manière que pour les mises à jour normales des exercices.