Работа с репозиторием

Получение репо

Работы выполняются с использованием системы контроля версий GitHub. Для работы с системой требуется зарегистрироваться на GitHub.

После регистрации нужно присоединиться к GitHub Classroom. Это можно сделать, перейдя по ссылке репозитория. В качестве имени пользователя (student) нужно найти себя. Если этого не произошло, то нужно написать преподавателям, чтобы вас добавили в список.

Если вы не найдёте себя в списке и нажмёте дальше, то списке студентов со стороны преподавателей вы будете отображаться без имени, а работы безымянных студентов не проверяются.

После того, как вы примите задание, то вам будет автоматически создан приватный репозиторий (созданный на основе шаблонного), куда нужно будет загружать вашу работу. Что от вас ожидается в репозитории вы увидите в условии работы.

Названия коммитов должны быть адекватными, а не рандомным набором символов. Описание опционально при первой отправке и обязательно при повторной, т.к. если при исправлении багов в описании коммита проверяющий увидит, что именно вы изменили, то это упростит повторную проверку работы.

Структура репо

Изначально у вас будет 2 ветки main и feedback.

Вся разработка ведётся на main, а на feedback производятся отправки решения на проверку через Pull Request, который вам уже создан автоматически. В случае, если работа подразумевает написание кода, то можно создавать другие ветки и работать на них, но к моменту отправки работы нужно не забыть положить всё на main.

На main может лежать .github, .gitignore, .gitattributes, test_data, README.md:

  • .github, test_data – настройка автотестов, модифицировать содержимое запрещено

  • .gitignore, .gitattributes – преднатроенные файлы для работы git, модифицировать содержимое запрещено

Запрещено модифицировать содержимое репозитория самостоятельно. Подтягивание изменений из шаблонного репозитория является исключением, т.к. там видно, что модификация сделана преподавателями.

Загрузка решения

Категорически не допускается загрузке в репозиторий не имеющих отношения к работе файлов, а также скомпилированных программ, промежуточных файлов и файлов, создаваемых средами разработки, например:

  • */Debug, */Release и прочее от Visual Studio.

  • .idea и прочее от CLion.

То есть, в репозиторий можно отправлять только файлы *.c, *.h, *.cpp, *.hpp и дополнительные файлы, изначально размещающиеся в репозитории, если другое не указано в условии задания. Если в репозиторий будет загружен CMakeLists.txt или Lab.sln/Lab.vcxproj, то это не запрещается, но при сборке на тестовом стенде у проверяющего никак использоваться и учитываться не будет.

Автотесты (GitHub Actions)

В ваших репозиториях настроены автотесты для проверки, что в репозитории лежат отчёт и приложение согласно условию, код в состоянии собраться и собранный исполняемый файл отрабатывает верно.

Дополнительным требованием в работе может быть прохождение автотестов на GitHub, об этом написано в условии работы.

Подробнее: Автотесты на GitHub

Подтягивание изменений из шаблонного репозитория

Тесты могут дополняться/исправляться в процессе выполнения работы, поэтому для актуализации репозитория необходимо подтянуть изменения из шаблонного репозитория самостоятельно. Подробнее: https://docs.github.com/ru/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork. В исключительных случаях возможна автоматическая разливка.

Как это может выглядеть со стороны студента:

Вариант 1: Update branch

На GitHub отображается, что есть коммиты "behind" (возможно и "ahead") стартового репозитория, есть опция "Sync fork".

или

Update branch

Discard commit

подтягивает изменения из стартового репозитория

удаляет все коммиты в текущем репозитории и вытягивает историю коммитов стартового (ваши изменения удалятся)

Выбираем Update branch.

Когда изменения подтянутся статус изменится на следующий:

Вариант 2: Pull request

На GitHub отображается, что есть коммиты "behind" и "ahead" стартового репозитория, нет опции "Sync fork".

В таком случае необходимо подтянуть изменения через Pull Request.

Можно посмотреть, что изменения сделаны только в изначальных файлах репозитория и не касаются вашего кода.

Когда изменения подтянутся статус изменится на следующий:

Вариант 3. Sync -> PR

Если же есть поция Sync, но она приводит к варианту создания Pull Request, то значит обнаружен конфликт изменений и были изменены файлы, изначально располагающиеся в репозитории. В таком случае пишем Виктории.

Last updated