Điều có thể khá khả thi:
- Tạo 2 kho lưu trữ: học sinh và giáo viên.
- Sao chép chúng vào máy của bạn (có thể được thực hiện với ứng dụng khách Github)
- Bạn chỉ làm việc trong giáo viên , không bao giờ chạm vào học sinh.
Vì vậy, cấu trúc thư mục của bạn là 2 nhân bản git repo:
- / student (có thư mục .git)
- / giáo viên (với một thư mục .git)
Bạn đặt các điểm đánh dấu xung quanh mã "riêng tư" trong các bình luận cho ngôn ngữ của bạn, ví dụ javascript bên dưới. Các điểm đánh dấu cho biết nơi mã riêng bắt đầu và kết thúc.
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
Sau đó, tạo một tập lệnh đơn giản trên máy cục bộ của bạn:
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);
});
Nó sẽ: lấy tất cả các tệp của bạn và sao chép nội dung vào / student (ghi đè) mà không có các phần được đánh dấu riêng tư của mã. Nếu bạn muốn bạn có thể chèn các dòng trống ở đó nhưng điều đó có thể đưa ra gợi ý về loại giải pháp mà bạn mong đợi.
Đó là mã ví dụ chưa được kiểm tra, vì vậy có khả năng bạn phải thực hiện một số gỡ lỗi.
Bây giờ chỉ có điều bạn phải làm là cam kết và đẩy vào kho lưu trữ của sinh viên khi bạn hài lòng về đầu ra. Điều đó có thể được thực hiện trong một cú nhấp chuột khi sử dụng ứng dụng khách GitHub (vì vậy bạn có thể thực hiện đánh giá trực quan nhanh) hoặc chỉ thực hiện thủ công trên dòng lệnh.
Repo của sinh viên chỉ là một kho lưu trữ đầu ra nên nó sẽ luôn cập nhật, rõ ràng cho sinh viên biết những gì đã thay đổi bằng cách xem các cam kết (vì chúng chỉ hiển thị các thay đổi) và thật đơn giản để xử lý.
Một bước nữa sẽ là tạo một git commit-hook tự động chạy tập lệnh của bạn.
Chỉnh sửa: Xem bạn đã thực hiện chỉnh sửa bài đăng của mình:
Rõ ràng tôi không muốn các sinh viên có quyền truy cập vào giải pháp (cho đến khi bài tập kết thúc).
Tôi nghi ngờ điều đó rõ ràng nhưng phải hoàn thành: Chỉ cần xóa các thẻ xung quanh bài tập đã hoàn thành sẽ xuất bản câu trả lời giống như cách bạn làm để cập nhật bình thường cho bài tập.