非常に実行可能なこと:
- 学生と教師の2つのリポジトリを作成します。
- それらをマシンにクローンします(Githubクライアントで実行できます)
- あなたは先生だけで働き、生徒に触れないでください。
したがって、ディレクトリ構造は2つのクローンgitリポジトリです:
- / student(.gitフォルダーを使用)
- / teacher(.gitフォルダーを使用)
あなたの言語のコメントにある「プライベート」コードの周りにマーカーを置きます。以下のjavascriptの例。マーカーは、プライベートコードの開始位置と終了位置を示します。
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クライアントを使用する場合(ワンクリックで簡単に確認できる)にワンクリックで実行できます。または、コマンドラインで手動で実行することもできます。
学生レポは出力リポジトリのみであるため、常に最新の状態に保たれ、コミットを確認することで何が変更されたかが明確になり(変更のみが表示されるため)、処理が簡単です。
さらに1つのステップは、スクリプトを自動実行するgit commit-hookを作成することです。
編集:投稿を編集したことを確認します。
明らかに、生徒にソリューションへのアクセス権を与えたくありません(課題が終了するまで)。
はっきりしていると思いますが、完全なものです。完成したエクササイズのタグを削除するだけで、エクササイズの通常の更新と同じ方法で回答が公開されます。