Что может быть вполне выполнимо:
- Создайте 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 (так что вы можете сделать быстрый визуальный обзор) или просто сделать это вручную в командной строке.
Репозиторий для учащихся - это выходной репозиторий, поэтому он всегда будет оставаться в курсе, студентам будет ясно, что изменилось, если посмотреть на коммиты (потому что они только показывают изменения), и с ним просто работать.
Еще одним шагом будет создание git commit-hook, который автоматически запускает ваш скрипт.
Редактировать: увидеть, что вы сделали редактирование вашего сообщения:
Очевидно, я не хочу, чтобы студенты имели доступ к решению (пока задание не закончено).
Я подозреваю, что это понятно, но для завершения: просто удалите теги вокруг законченного упражнения, и публикация ответа будет точно такой же, как вы делали бы это для обычных обновлений упражнений.