1. Описание домашней работы

1.1. Из чего состоят задания

1.2. Порядок сдачи лабораторной работы

1.3. Снижение баллов

1.4. Как связаться с преподавателем

2. Инициализация репозитория

2.1. Использование ссылки-приглашения

2.2. Настройка слияний веток

3. Интеграция в пулл-реквесты

3.1. Github-Actions

images/github-actions.png

3.2. Автоматическая проверка

images/failed-task.png

3.3. Пример пулл-реквеста

  • В настройках пользователя написать своё имя (либо в сообщении пулл-реквеста)
  • В тело сообщения вставить лог прохождения тестов
  • В reviewers назначить igsha
  • Все автоматические проверки должны быть успешно пройдены

images/successed-task.png

4. Как работать с лабораторными

  1. Перечитывать инструкцию при подготовке к каждой лабораторной работе
  2. Каждая лабораторная должна быть в своей ветке
  3. Перед началом работы над лабораторной сделайте отдельную ветку из main:
    $ git checkout main
    $ git checkout -b laba3
  4. Удалите первую строку, содержащую фразу return(), из файла CMakeLists.txt в соответствующей папке лабораторной работы
  5. Почистите сборочное дерево (обычно это директория build в корне репозитория) от предыдущих попыток
  6. Сконфигурируйте весь проект, находясь в корне репозитория (нужен самый головной CMakeLists.txt):
    $ cmake -B build
  7. Зайдите в сборочное дерево и вызовите команду сборки (ninja, make или просто cmake --build .)
  8. Исправьте код лабораторной работы (hpp-файл в директории include/), чтобы сборка проходила успешно
Предостережение
Знак $ — это приглашение командной строки, не нужно его писать

4.1. Как работать с лабораторными (продолжение)

  1. Запустите тесты командой ctest из дерева сборки
  2. Если всё хорошо, нужно закоммитеть изменения локально
    $ git commit -am "My awesome lab3 is perfect"
  3. После этого нужно запушить изменения на сервер и создать пулл-реквест (ссылка на создание пулл-реквеста будет в сообщении после команды)
    $ git push
  4. Все последующие изменения этой лабораторной работы должны быть закоммичены с помощью замещения и запушены на сервер силой
    $ git commit -a --amend
    $ git push --force
  5. Перечитать инструкцию
Предостережение
Настоятельно рекомендуется ознакомиться с лекциями №2 (работа с git) и №3 (работа с cmake)

5. Способы сборки проекта

5.1. Платформа Linux

Два способа сборки проекта

  1. Вручную устанавливаем нужные пакеты
    • gnumake (можно ninja)
    • cmake версии не ниже 3.12
    • gcc или clang с поддержкой 17-го стандарта C++
    • catch2 версии не ниже 2.8
    • boost версии не ниже 1.68
    • gdb для отладки кода
  2. Используя nix-shell
    • устанавливаем nix-shell по команде curl -L https://nixos.org/nix/install | sh
    • в корне проекта вызываем команду nix-shell. После этого nix сам установит и скачает нужные пакеты

5.2. Платформа Windows

Подсказка
Если есть желание и установленный WSL в системе, можно поиграться в nix-shell.
Предостережение
Я не умею в винду, поэтому описание может быть неточным

5.3. Платформа Windows (установка и настройка VS)

images/vs-setup.png

5.4. Платформа Windows (установка пакетов)

5.5. Платформа Windows (разработка)