Cosa potrebbe essere abbastanza fattibile:
- Crea 2 repository: studente e insegnante.
- Clonali sulla tua macchina (può essere fatto con il client Github)
- Si lavora solo in insegnante , non toccare mai studente.
Quindi la tua struttura di directory è di 2 repository git clonati:
- / studente (con una cartella .git)
- / insegnante (con una cartella .git)
Metti dei marcatori attorno al codice "privato" nei commenti per la tua lingua, ad esempio javascript di seguito. I marcatori indicano dove inizia e finisce il codice privato.
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
Quindi crea un semplice script sul tuo computer 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);
});
Lo farà: prendi tutti i tuoi file e copia i contenuti su / student (sovrascrittura) senza le parti private contrassegnate del codice. Se lo desideri, puoi inserire righe vuote lì, ma ciò potrebbe dare un suggerimento sul tipo di soluzione che ti aspetti.
È un codice di esempio non testato, quindi probabilmente devi fare un po 'di debug.
Ora l'unica cosa che devi fare è impegnare e spingere nel repository degli studenti quando sei soddisfatto dell'output. Questo può essere fatto con un clic quando si utilizza il client GitHub (in modo da poter fare una rapida revisione visiva) o semplicemente farlo manualmente dalla riga di comando.
Il repository degli studenti è solo un repository di output, quindi rimarrà sempre aggiornato, è chiaro agli studenti cosa è cambiato osservando i commit (perché mostrano solo le modifiche) ed è semplice da gestire.
Un ulteriore passo sarebbe quello di creare un git commit-hook che esegue automaticamente il tuo script.
Modifica: vedi che hai apportato una modifica al tuo post:
Ovviamente non voglio che gli studenti abbiano accesso alla soluzione (fino alla fine dell'incarico).
Ho il sospetto che sia chiaro ma per essere completo: basta rimuovere i tag intorno all'esercizio finito per pubblicare la risposta nello stesso modo in cui faresti per i normali aggiornamenti degli esercizi.