Полезные мелочи для новичков - profcomff/.github GitHub Wiki

Naming convention

В этой подглаве описано, как мы именуем сущности при работе с приложением "Твой ФФ!".

  • Само приложение имеет название aggregator-app. Тут находятся всякие низкоуровневые штуки.
  • Все микрофконтэнды (маленькие подприложения) к нему имеют название *-webapp (например timetable-webapp)
  • Все бэкэнды имеют название *-api (например timetable-api)
  • Боты ВК и телеги имеют суффикс *-vkbot, *-tgbot (например print-vkbot)
  • Библиотеки для бэкэнда и фронтенда имеют названия *-lib и *-weblib соответственно (например auth-lib)

Как пользоваться гитом

Git - это консольная утилита для отслеживания и ведения истории изменения файлов, в вашем проекте. Github – это онлайн хранилище для совместной работы над этим кодом и кучей клевых фич. Далее представлена краткая инструкция как работать с гитом.

Установить git можно отсюда: https://git-scm.com/downloads

Большинство людей пользуются графическими интерфейсами от Github или Bitbukket, многие пользуются расширениями в средах разработки. Это все, конечно, хорошо, но консолька плюс-минус всегда пригождается для решения каких-нибудь мелких проблем. А еще она у всех одинаковая :)

Последовательность действий кратко

  1. Создайте папку, в которой будете хранить код проектов. Я использую папку на рабочем столе с названием profcomff
  2. Откройте командную строку (в Windows) или терминал (в Mac/Linux). Перейдите в нужную папку командой cd
    • Переход в папку profcomff на рабочем столе будет выглядеть так: cd Desktop/profcomff
    • Чтобы забрать себе код на компьютер, пользуются командой git clone <url>
    • url можно взять на страничке проекта под кнопкой Code
    Screenshot 2022-09-18 at 22 22 08 * Это автоматически создаст папку с названием проекта в папке `Desktop/profcomff`
  3. Примем за аксиому, что мы никогда не пушим (git push) и, особенно, не форс пушим (git push --force) в ветки main. Это позволяет нам комфортно работать как самим, так и остальным пользователям кода. По идее, на всех репозиториях стоит блок, но все равно опишем это как правило.
    • Изменения в приложение лучше всего проводить с последних версий кода, чтобы получить последнюю версию выполняем git pull
    • Чтобы делать изменения мы переходим в новую ветку, для этого делаем git checkout -b <название-новой-ветки>
    • Чтобы вернуться к коду, который сейчас работает у пользователей, используется команда git checkout main. После нее всегда следует команда git pull.
  4. После внесения изменений в код, нужно эти изменения сохранить и отправить на github
    • Добавление всех сделанных изменений в ветке git add .. Можно добавлять файлы по одному через git add <путь-к-файлу>.
    • Создание новой версии кода git commit -m "Описание изменений". Лучше всего эту команду выполнять тогда, когда добились каких-то результатов и ваш код работает с вашими изменениями. В описании изменений кратко и емко изложите суть этих изменений. Например, "добавил кнопку старт" или "новая апи-ручка /route".
    • После одного или нескольких коммитов нужно закинуть код на github командой git push. Если делаете пуш из новой ветке, то гит выдаст ошибку, в тексте которой написана правильная команда.
    • Когда закончили пилить фичу, опубликуйте ветку в виде Pull request в интерфейсе github. Просто откройте нужный репозиторий и у вас появится кнопка. Там изменения откомментируют опытные ребята, после чего, скорее всего, придется еще внести изменений в код.
    • Когда pull request приняли и пора начинать новую фичу, всегда выполняем команды git checkout main и git pull

Если возникают трудности

Закоммитился в main / мне не дает сделать git push

  1. Выполни git checkout -b <название-новой-ветки>
  2. git push. Гит выдаст ошибку, в тексте которой написана команда с правильными аргументами.

Гитхаб ругается, что нельзя сделать merge в веку main

  • Возможно, поможет кнопка Rebase в интерфейсе гитхаба
  • В консоли можно выполнить
    1. git rebase origin/main, чтоб забрать последние изменения в ветке main на гитабе
    2. Появится список файлов, которые нужно посмотреть и отредактировать, чтобы продолжить работу.
    3. После исправления ошибок выполнить команду git rebase --continue
    4. Сделать коммит в ветку с заменой git push -f. Так делать можно только в те ветки, где работаете только вы :)

Творится какая-то дичь, ничего не спасает

  • Удали папку проекта. Удалит все изменения!
  • Склонируй репозиторий заново командой git clone <url>

Таск трекинг

Для того, чтобы знать кто чем занимается в приложении Твой ФФ! мы ведем доску с задачами. На этой доске есть все таски из всех репозиториев, относящихся к приложению. В целом, у нас тут упрощённый канбан!

image

На доске есть 5 колонок:

  • Backlog – задачи "на будущее". Мы не уверены, что хотим это делать и будем когда-либо, но идейно записали. Все задачи создаются с этим статусом и потом переносятся в другие столбцы.
  • Todo – запланировали делать. Обычно в этом столбце хранятся задачи на ближайшие несколько недель, у которых уже есть исполнитель, но к которым еще не приступили. Если исполнитель не назначен – можно забрать задачку себе :)
  • In progress – задачи в работе. Точно имеют исполнителя, по задаче идет движение.
  • Done – выполненные задачи. Сюда можно перетаскивать задачки после мержа пулл реквестов и выкатки на прод. А еще эти задачки стоит закрывать.
  • LTS – отдельный столбец для длительных проектов (эпиков, читай ниже). Это проекты, за которые есть ответственный менеджер и он занимается развитием этого сервиса в целом: ставит задачи по фронту, бэку, контенту и т.д.

У нас есть 5 основных тегов для задач, из них 3 по которым мы определяем их тип задачи:

  • Bug – в коде сервиса есть ошибка.
  • New feature / Enhancement – необходима разработка нового функционала или доработка старого.
  • Epic – крупная высокоуровневая задача, в которую входят и разработка фронта, и бэкэнда, и сбор контента и т.д. Например, бесплатный принтер профкома – это установка принтера, разработка интерфейса отправки заданий на печать, интерфейс управления пользователями принтера, интерфейс терминала печати, бот отправки на печать и бэкэнд.

И еще 2 для удобства сортировки

  • Good first issue – задача подходит для новичков.
  • Wontfix – описанные изменения невозможно воспроизвести/исправить.
⚠️ **GitHub.com Fallback** ⚠️