Инструкция по сдаче заданий
В рамках курса вам будут предложены домашние задания и практики. Сдача происходит с помощью Merge Request в GitLab.
Для работы с заданиями вам необходимо аутентифицироваться на https://gitlab.ct.itmo.ru через вашу учётную запись ITMO ID. В процессе нужно будет подтвердить почту — следуйте инструкциям.
После этого вам также необходимо настроить взаимодействие с репозиториями через SSH-ключи по инструкции от GitLab. В дальнейшем ВСЕ ссылки на репозитории, в частности для клонирования, должны быть в формате SSH.
Создание репозитория с заданием
- К каждому заданию будет приложена инвайт-ссылка для создания репозитория в GitLab, после перехода по ней у вас создастся приватный репозиторий со стартовым кодом, тестами и конфигурациями. Склонируйте его и выполняйте задания в ветке
solution. - Вместе с репозиторием автоматически создаётся Merge Request из ветки
solutionв веткуmaster.
Подтягивание новых тестов и других изменений
Иногда нам приходится править какие-то проблемы в конфигурациях или добавлять новые тесты. В этом случае изменения автоматически подтянутся в master ветку вашего репозитория на GitLab. При наличии конфликтов с веткой solution вы должны самостоятельно их разрешить.
Сдача
Для сдачи решения необходимо сделать следующее:
- Сделайте коммит(-ы) с вашим решением.
- Перенесите решение в ветку
solution, если не делали сразу всё в ней. - Запушьте
solutionна удалённый репозиторий. - Откройте автоматически созданный Merge Request (MR) и удостоверьтесь, что тесты в тестирующей системе прошли (в MR появится зелёная галочка, также можно посмотреть подробности, нажав по ней).
- Важно: Проверьте, что в MR нет конфликтов с веткой
master. При необходимости предпримите действия для их разрешения (например,git rebase). - Пришлите с помощью формы заявку на проверку с ссылкой на этот MR.
- В случае первой сдачи (или если все ваши сдачи были проверены на
/) выберите режимсдача, иначе —правки. - Дождитесь проверки. Исправьте замечания и, если они есть, повторите процесс.
Пожалуйста, не выкладывайте никакие решения заданий курса в публичный доступ и не оказывайте тем самым медвежью услугу будущим студентам. Спасибо за понимание!
Процесс проверки
- В процессе проверки преподаватель будет оставлять комментарии в вашем MR. Комментарии — это замечания, которые нужно исправлять.
- Некоторые комментарии могут быть помечены
[note], их исправление необязательно — чаще всего это предложения альтернативных решений, иногда выходящих за рамки курса. - Закрывать (“resolve”) треды с комментариями может только преподаватель.
- На каждый оставленный комментарий нужно ответить: либо кратко написать, как поправили, либо, если вы считаете, что замечание некорректно и вам не нужно ничего исправлять, обосновать это в ответе.
- В простейших случаях, когда комментарий однозначно указывает, как решить проблему — может быть достаточно ответить “fixed”. Это не относится к случаям, когда у проверяющих возникли к вашему коду вопросы (на них нужно ответить) или вам указали на проблему, которую можно адресовать множеством способов (хочется знать, каким путём пошли вы).
- Задание считается полностью выполненным, только если не осталось ни одного неисправленного комментария кроме
[note]. - Не стоит посылать заявку на проверку правок до того, как вы ответили на все комментарии (и исправили замечания).
- Любые коммиты, сделанные после посылки формы и до её проверки, делаются на ваш страх и риск, так как могут произойти уже после того, как преподаватель начал проверку.
- MR ни в какой момент не будет замёрджен, это нормально.
Коммиты
При создании коммитов необходимо придерживаться следующих правил (их несоблюдение считается ошибкой оформления и может быть оценено на /):
- Следите, чтобы в коммиты попадали только файлы с решением (при необходимости можете дополнять .gitignore), а файлы с тестами не изменились.
- При внесении правок разбивайте изменения на отдельные коммиты, в соответствии с замечаниями (или группами тесно связанных замечаний), а не объединяйте все в одну “кучу”.
- В частности, массовые переименования и рефакторинги должны быть вынесены в отдельные от осмысленных изменений коммиты.
- По сообщению коммита должно быть понятно, что было изменено.
- Не форсируется, но рекомендуется придерживаться какой-нибудь конвенции именования коммитов, например: https://cbea.ms/git-commit/.