===== Правила работы с репозиторием Github =====
==== Мастер-классы по работе с git ====
- [[https://youtu.be/kdP01GAvhFo|Как создать свой первый пулл реквест]]
- [[.programming:coming_soon|Как внести изменения в пулл реквест]]
==== Проверяйте git config на компьютерах в классе ====
Проверяйте настройки конфигурации, прежде чем делать Pull Request с компьютера в компьютерном классе на кафедре. Вам помогут три команды:
=== 1. Просмотреть текущие настройки конфигурации ===
git config --list
-- в выводе этой команды обратите внимание на первые две строки: **user.name** и **user.email** -- там должны быть указаны ваши данные, которые можно добавить так:
=== 2. Добавить свои данные в конфигурацию ===
git config --local user.email ivan@ivanov.com
git config --local user.name IvanIvanov
-- где ivan@ivanov.com -- это почта, с которой был зарегистрирован гитхаб аккаунт IvanIvanov
* В чем разница между --global и --local самостоятельно прочитайте [[https://www.atlassian.com/ru/git/tutorials/setting-up-a-repository/git-config|здесь]]
Если в компьютерном классе испльзовали флаг --global то повторите действия п. 2, чтобы следующий студент на этой машине не сделал свой пулл реквест в другой репо с вашими данными.
==== Именование ветки: <Фамилия>_<Имя>_<Вид и номер работы> ====
Пример именования ветки для студента Иванова Ивана, который хочет выполнить первую лабораторную работу:
Ivanov_Ivan_lb1
Вид работы может быть lb и cw для лабораторной и курсовой работы соответственно. Пожалуйста, учтите, что название lr или любое другое для лабораторной засчитано не будет.
==== Комменарий коммита должен быть осмысленным ====
Пример добавления комментария к коммиту (Ubuntu):
git commit -m "Ivanov LB1 done"
==== Каждая новая лабораторная/курсовая/контрольная работа должна находиться в своей ветке, которая обязательно должна быть создана из ветки main ====
Пример перехода на ветку main и создания + перехода в новую ветку Ivanov_Ivan_lr1 (Ubuntu):
git checkout main && git pull origin main
git checkout -b Ivanov_Ivan_lb1
==== Каждая лабораторная/курсовая/контрольная работа должна находиться в своей папке, которая должна называться также, как ветка ====
Пример создания папки (Ubuntu):
mkdir Ivanov_Ivan_lb1
==== Добавление файлов на Github должно происходить с помощью консоли ====
Пример добавления файлов, создания коммита и отправки коммитов на GitHub (Ubuntu):
git add Ivanov_Ivan_lb1/main.c
git commit -m "Ivanov_Ivan_lb1: done"
git push origin Ivanov_Ivan_lb1
==== В репозитории должен храниться только исходный код и отчёты к лабораторным ====
Не добавляйте никакие другие файлы в Ваш пуллреквест.
* Файлы с исходным кодом должны находиться в **папке** **src** внутри вашей папки с лабораторной
==== Автоматическая проверка пуллреквестов. Лэйблы ====
Каждый открытый пуллреквест автоматически проверяется на соответствие правилам. В случае, если пуллреквест содержит нарушения, он закрывается с соответвующим комментарием и на него вешается лэйбл.
Нарушения, за которые ваш пуллреквест будет автоматически закрыт:
- Добавление и снятие лэйблов с пуллреквеста
- Название (title) пулл-реквеста должно иметь формат: <Фамилия>_<Имя>_<Вид работы><Номер работы>
- Все добавляемые/изменяемые/удаляемые файлы должны относиться к рабочей папке, вне нее ничего менять нельзя (в том числе удалять чужие рабочие папки, добавлять свои документы в корень репозитория)
- Нельзя добавлять файлы с запрещенными расширениями. К запрещенным расширениям относятся .pyc, .o, .exe, .out
- В вашей рабочей папке должен быть отчет в формате pdf (в дополнение может быть отчет в формате doc/docx/odt)
- В корневой папке репозитория должна быть папка с названием, совпадающим с названием пуллреквеста.
Обычные нарушения, за которые пуллреквест может быть закрыт преподавателем:
- Пуллреквест должен быть создан пользователем с гитхаб-логином, соответствующим имени и фамилии, которые указаны в названии пуллреквеста. В корне репозитория лежит файл README.md, в котором явно указаны имя, фамилия и github логин студентов. Все коммиты в пуллреквесте должны быть добавлены этим пользователем.
- Сообщения всех добавленных в пуллреквесте коммитов должны содержать вашу фамилию и название работы, которую вы сделали.
Если проверка была начата, то она заканчивается одним из трех результатов:
* всё хорошо (passed),
* есть нарушения (failed),
* есть нарушения, за которые пуллреквест закрыт (violated)
В любом из случаев в комментариях к пулл-реквесту будет написан результат, и на пулл-реквест будет установлен соответствующий лэйбл (passed, failed, violated).
Пуллреквест считается корректным (т.е. за него можно получить баллы), если присутствует лэйбл passed и корректный отчет.
===== Что делать, если мой Pull Request был закрыт? =====
Нужно исправить причины, по которым был закрыт Ваш Pull Request, и нажать кнопку "**Reopen**".
**Нельзя создавать новый Pull Request** при наличии уже существующего с метками преподавателя, метками проверяющей системы или комментариями преподаватя. При __нарушении__ данного правила ваши баллы **могут быть аннулированы или снижены** на усмотрение преподавателя по лабораторным работам.
Если по каким-то причинам вы __не смогли исправить__ предыдущий pull request, то в новом pull-request'е оставьте **ссылку на предыдущий с указанием возникшей проблемы**
===== Опечатка в названии аккаунта в истории коммитов -- что делать? =====
Часто бывает так, что при настройке //git config// вы делаете опечатки в гитхаб аккаунте.
Любой неправильный символ приведет к тому, что система автоматической проверки распознает ваш пулл реквест как сделанный некорректно.
Чтобы исправить свою ошибку в истории коммитов, надо поступить следующим образом: найти последний коммит, сделанный вами через ваш правильный аккаунт и вернуться к нему. Команды представлены ниже:
git reset --hard
git push origin
===== Коммиты в ветку main =====
* Запрещено делать любые коммиты в ветку main
Это влечет за собой **минус 1 балл к вашему итоговому рейтингу**. Минус балл начисляется **за каждый коммит!** Например, если вы сделали __3 коммита в ветку main__, то получаете __минус 3 балла__ к рейтингу
===== Что делать, если я случайно смержил свой пулл реквест? =====
Если это произошло в срок **до дедлайна по прохождению курса Git**, то Вам следует:
- удалить свою ветку
- __создать пулл реквест заново__;
- в комментариях к новому пулл реквесту указать ссылку на первый пулл реквест (вы не теряете баллы).
Если это произошло **после дедлайна по прохождению курса Git**, то :
* Вы теряете баллы за пулл реквест и баллы за защиту смерженной лабораторной работы.
* Вы можете **решить другой вариант лабораторной работы**
* "Другой вариант" - следующий после того, который решили изначально
* Предварительно необходимо проинформировать преподавателя по электронной почте
* После этого Вы можете создать новый пулл реквест с другим вариантом лабораторной работы.
* В комментарии нового пулл реквеста укажите: какой вариант был до, дайте ссылку на предыдущий пулл реквест, укажите какой вариант в новом пулл реквесте.
* Если есть занятия по расписанию до дедлайна, вы можете защищать новый пулл реквест с другим вариантом лабораторной работы (защита регулируется правилами рейтинговой системы).