สิ่งที่สามารถทำได้ค่อนข้าง:
- สร้างที่เก็บ 2 แห่ง: นักเรียนและอาจารย์
- โคลนพวกเขาไปยังเครื่องของคุณ (สามารถทำได้กับลูกค้า Github)
- คุณทำงานเฉพาะครูเท่านั้นอย่าแตะต้องนักเรียน
ดังนั้นโครงสร้างไดเรกทอรีของคุณจึงเป็น 2 repo git repo:
- / นักเรียน (พร้อมโฟลเดอร์. git)
- / ครู (พร้อมโฟลเดอร์. git)
คุณใส่เครื่องหมายรอบรหัส "ส่วนตัว" ในความคิดเห็นสำหรับภาษาของคุณเช่นจาวาสคริปต์ด้านล่าง เครื่องหมายระบุว่ารหัสส่วนตัวเริ่มต้นและสิ้นสุดที่ใด
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
จากนั้นสร้างสคริปต์ง่าย ๆ บนเครื่องของคุณ:
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);
});
มันจะ: นำไฟล์ทั้งหมดของคุณและคัดลอกเนื้อหาไปยัง / นักเรียน (เขียนทับ) โดยไม่มีส่วนที่ทำเครื่องหมายไว้ส่วนตัวของรหัส หากคุณต้องการคุณสามารถแทรกบรรทัดว่างเปล่าที่นั่น แต่นั่นอาจให้คำแนะนำเกี่ยวกับชนิดของการแก้ปัญหาที่คุณคาดหวัง
มันเป็นรหัสตัวอย่างที่ยังไม่ทดลองดังนั้นคุณอาจต้องทำการดีบักบ้าง
ตอนนี้สิ่งเดียวที่คุณต้องทำคือกระทำและผลักดันพื้นที่เก็บข้อมูลของนักเรียนเมื่อคุณพอใจกับผลลัพธ์ ที่สามารถทำได้ในคลิกเดียวเมื่อใช้ลูกค้า GitHub (เพื่อให้คุณสามารถตรวจสอบภาพอย่างรวดเร็ว) หรือเพียงแค่ทำด้วยตนเองในบรรทัดคำสั่ง
repo ของนักเรียนเป็นที่เก็บเอาท์พุทเท่านั้นดังนั้นมันจะอยู่เสมอที่ทันสมัยมันชัดเจนกับนักเรียนที่มีการเปลี่ยนแปลงโดยดูที่การกระทำ (เพราะพวกเขาเพียงแสดงการเปลี่ยนแปลง) และง่ายต่อการจัดการ
อีกหนึ่งขั้นตอนต่อไปคือการสร้างคอมมิชชันคอมมิชชันซึ่งรันสคริปต์ของคุณโดยอัตโนมัติ
แก้ไข: เห็นคุณทำการแก้ไขโพสต์ของคุณ:
เห็นได้ชัดว่าฉันไม่ต้องการให้นักเรียนเข้าถึงการแก้ปัญหา (จนกว่างานจะเสร็จสิ้น)
ฉันสงสัยว่ามันชัดเจน แต่จะเสร็จสมบูรณ์: เพียงแค่ลบแท็กรอบการฝึกที่เสร็จแล้วออกจะเผยแพร่คำตอบในแบบเดียวกับที่คุณทำสำหรับการอัพเดทตามปกติของแบบฝึกหัด