할 수있는 것 :
- 학생과 교사라는 두 개의 저장소를 만듭니다.
- 머신에 복제 (Github 클라이언트로 수행 가능)
- 당신 은 교사에서만 일하고 학생을 만지지 마십시오.
따라서 디렉토리 구조는 2 개의 복제 된 git repo입니다.
- /student(.git 폴더 포함)
- /teacher(.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);
});
그것은 모든 파일을 가져 와서 코드의 개인 표시 부분없이 / student (덮어 쓰기)에 내용을 복사합니다. 빈 줄을 삽입 할 수 있지만 원하는 솔루션 종류에 대한 힌트를 줄 수 있습니다.
테스트되지 않은 예제 코드이므로 디버깅을 수행해야 할 것입니다.
이제 출력에 만족할 때 학생 저장소에 커밋하고 밀어 넣기 만하면됩니다. GitHub 클라이언트를 사용할 때 한 번의 클릭으로 수행 할 수 있으므로 (빠른 시각적 검토를 수행 할 수 있음) 또는 명령 줄에서 수동으로 수행 할 수 있습니다.
학생 저장소는 출력 저장소 일 뿐이므로 항상 최신 상태를 유지합니다. 커밋을보고 (변경 사항 만 표시하기 때문에) 변경 사항을 학생들에게 명확하게 다루며 처리하기 쉽습니다.
한 단계 더 나아가서 스크립트를 자동 실행하는 git commit-hook을 작성하는 것입니다.
수정 : 게시물 수정을 참조하십시오.
분명히 나는 학생들이 솔루션에 액세스하기를 원하지 않습니다 (과제가 끝날 때까지).
나는 그것이 분명하지만 완전하다고 생각합니다. 완료된 운동 주위의 태그를 제거하면 운동에 대한 일반적인 업데이트와 동일한 방법으로 답변이 게시됩니다.