Apa yang bisa dilakukan:
- Buat 2 repositori: siswa dan guru.
- Mengkloningnya ke mesin Anda (dapat dilakukan dengan klien Github)
- Anda hanya bekerja di guru , tidak pernah menyentuh siswa.
Jadi struktur direktori Anda adalah 2 klon git repo:
- / siswa (dengan folder .git)
- / guru (dengan folder .git)
Anda menaruh spidol di sekitar kode "pribadi" dalam komentar untuk bahasa Anda, contoh javascript di bawah ini. Penanda menunjukkan di mana kode pribadi mulai dan berakhir.
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
Kemudian buat skrip sederhana di mesin lokal Anda:
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);
});
Ini akan: mengambil semua file Anda dan menyalin konten ke / siswa (menimpa) tanpa bagian kode yang ditandai pribadi. Jika mau, Anda dapat memasukkan baris kosong di sana tetapi itu mungkin memberikan petunjuk tentang solusi apa yang Anda harapkan.
Ini adalah kode contoh yang belum diuji, jadi kemungkinan Anda harus melakukan debugging.
Sekarang yang harus Anda lakukan adalah berkomitmen dan mendorong repositori siswa ketika Anda senang dengan hasilnya. Itu dapat dilakukan dalam satu klik saat menggunakan klien GitHub (sehingga Anda dapat melakukan tinjauan visual cepat) atau hanya melakukannya secara manual pada baris perintah.
Repo siswa adalah repositori keluaran saja sehingga akan selalu tetap terkini, jelas bagi siswa apa yang diubah dengan melihat komit (karena mereka hanya menunjukkan perubahan) dan mudah ditangani.
Satu langkah lebih jauh adalah membuat git commit-hook yang menjalankan skrip Anda secara otomatis.
Sunting: Lihat Anda melakukan pengeditan pada posting Anda:
Jelas saya tidak ingin siswa memiliki akses ke solusi (sampai tugas selesai).
Saya menduga itu jelas tetapi harus lengkap: Hanya menghapus tag di sekitar latihan selesai akan mempublikasikan jawabannya dengan cara yang sama seperti yang Anda lakukan untuk pembaruan normal untuk latihan.