Первым делом скачайте себе данный репозиторий локально:
- Делаем fork этого репозитория. Копия этого репозитория появится в вашем аккаунте - это можно сделать в веб версии, нажав на кнопку fork в верхней части проекта.
- Клонируем
ВАШfork себе на компьютер. Прописать в терминале с установленным git:
git clone https://github.com/YourGitHubLogin/ZZZ-Computer-Science-Course.git
cd ZZZ-Computer-Science-CourseГде вместо YourGitHubLogin ваш логин на GitHub.
- Устанавливаем связь с оригинальным репозиторием. Часто может быть, что репозиторий будет обновляться. Так как вы работаете с копием, необходимо подтягивать изменения из оригинального в копию. Для этого устоновите связь копии и оригинала:
git remote add upstream https://github.com/Maxsmile123/ZZZ-Computer-Science-Course- Сборка проекта
Перейдите в скачанный репозиторий и создайте папку build в корне репозитория, после чего соберите проект:
mkdir build
cd build
cmake ..Процесс может занять продолжительное время, наберитесь терпения.
- Сборка задачи
Для того, чтобы собрать вашу задачу, необходимо не покидая папки build прописать команду в формате:
make TASKVARПосле чего начнётся сборка, которая первоначально может занять продолжительное время.
Чтобы запустить тесты к задаче, пропишите:
./TASKVARДопустим, я работаю над задачей geometry, вариант 20. Тогда шаги будут следующими:
make geometry20
./geometry20Это процедура необходима, чтобы проверить код на успешную компиляцию, отсутствие утечек памяти и UB.
В проекте предусмотрен кодстайл, который необходимо соблюдать. Для локального запуска линтеров и форматтеров, выполните следующие шаги:
- Установите себе clang-format и clang-tidy
sudo apt-get install clang-format
sudo apt-get install clang-tidy- Скопируйте файлы .clang-format и .clang-tidy в папку
build:
cp .clang-format build
cp .clang-tidy build- Запустите проверку, находясь в папке
build:
../tools/run_linter.sh pathгде path - путь к директории, которую необходимо проверить, в вашем случае это путь к папке с решаемым вариантом.
Данный процесс представляет автоматизацию деплоя кода в продакшн.
В нашем случае это сборка кода под санитайзерами, которые проверяют код на ошибки работы с памятью и наличие UB, запуск форматтера, который проверит код на соответствие код стайлу, а также запуск тестов, если они предусмотрены.
- Прочтите правила написания кода, которые будут проверяться в CI.
Pull request(PR) - это запрос стороннего пользователя на внесение изменений в проект. В нашем случае проект это репозиторий с лабораторными работами.
Перед добавлением вашего кода в общий репозиторий, ваши изменения проходят процедуру code review. Это дословно обзор вашего кода, проверка его на состоятельность, логичность и правильную структурность. По ходу ревью можно писать комментарии(issues) к автору изменений.
Не отправляйте решение на проверку, если локально у вас вылазят ошибки - такие же ошибки вылезут и в CI.
- Код, не прошедший проверки в CI
- Код, написанный не по код стайлу
- Неработающий код
- Код не своего варианта
- Изменение, удаление, добавление файлов, не предусмотренных заданием.
Под каждую лабу должна быть своя ветка. Название веток на ваш вкус. Пример создания ветки и переключения на неё:
git checkout -b NameOfBranchВАЖНО
Создавайте ветку исключительно от своей главной ветки! Иначе в PR могут добавиться файлы других задач!
Для подтягивания изменений их оригинального репозитория, пропишите:
git checkout main
git fetch upstream
git merge upstream/main
git push origin maingit add path // добавить файлы на Stage. Тут path - путь к директории/файлу, которые нужно добавить
git commit -m "lol" // Создать коммит на основе файлов в Stage. Commit message может быть любымЧтобы узнать текущий статус изменений, пропишите:
git statusЧтобы посмотреть все коммиты текущей ветки, пропишите:
git logЧтобы переключиться на другой коммит, пропишите:
git checkout commit_hash // Где commit_hash - это хэш коммита, на который хотите переключитьсяЧтобы откатиться к предыдущей версии, пропишите:
git reset commit_hash // Все изменения от commit_hash до текущего будут лежать на Stage.
git reset --hard commit_hash // Все изменения от commit_hash до текущего безвозвратно удаляются.Все ваши коммиты отправляем на удалённый репозиторий командой git push:
git push origin NameOfBranchНажимаем на создать, выбираем какую ветку хотим отправить и пишем описание PR: в нём должна быть указана задача, которую вы выполнили.
Если не нравится консольный git, то те же действия можно выполнить через кнопки в VS code. Как с ним работать описано тут