===== Правила работы с репозиторием Github ===== ==== Приглашение в репозиторий ==== Будьте внимательны: приглашения в репозиторий истекают через 1 неделю (7 дней) после получения. Если вы не приняли приглашение в репозиторий на github, и оно истекло, преподаватель вышлет повторное приглашение в срок до 2 недель с момента получения вашего письма на почту с просьбой отправить приглашение повторно. Письмо должно быть с указанной темой и соблюдением правил составления писем: [[common:communication_rules]]. ==== Мастер-классы по работе с git ==== - [[https://youtu.be/kdP01GAvhFo|Как создать свой первый пулл реквест]] - [[.programming:coming_soon|Как внести изменения в пулл реквест]] - [[.programming:pull_request_creation_steps]] ==== Проверяйте 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 - В корневой папке репозитория должна быть папка с названием, совпадающим с названием пуллреквеста. Обычные нарушения, за которые пуллреквест может быть закрыт преподавателем: - Пуллреквест должен быть создан пользователем с гитхаб-логином, соответствующим имени и фамилии, которые указаны в названии пуллреквеста. В корне репозитория лежит файл 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 Затем необходимо удалить ветку в github репозитории и заново отправить ветку git push origin ===== Коммиты в ветку main ===== * Запрещено делать любые коммиты в ветку main Это влечет за собой **минус 1 балл к вашему итоговому рейтингу**. Минус балл начисляется **за каждый коммит!** Например, если вы сделали __3 коммита в ветку main__, то получаете __минус 3 балла__ к рейтингу ===== Что делать, если я случайно смержил свой пулл реквест? ===== * Вы теряете баллы за пулл реквест и баллы за защиту смерженной лабораторной работы. * Вы можете **решить другой вариант лабораторной работы** * "Другой вариант" - следующий после того, который решили изначально * Предварительно необходимо проинформировать преподавателя по электронной почте * После этого Вы можете создать новый пулл реквест с другим вариантом лабораторной работы. * В комментарии нового пулл реквеста укажите: какой вариант был до, дайте ссылку на предыдущий пулл реквест, укажите какой вариант в новом пулл реквесте. * Если есть занятия по расписанию до дедлайна, вы можете защищать новый пулл реквест с другим вариантом лабораторной работы (защита регулируется правилами рейтинговой системы).