/colaborate_webinar

Collaborative work using GIT

Primary LanguagePython

Что внутри .git

img

Что внутри .git

img

Что внутри .git

img

diff

img

Commits

img

Commits

img

Commits

img

Branches

img

Merge

img

Merge

img

Merge

img

Pull Request

img

Log

git log -p --graph
# -p : показать правки
# --graph : показать истории веток

Кто виноват?

git blame

img

Кто виноват?

git blame

git blame <file>

blame cPython

Совместная разработка

img

Совместная разработка

img

GIT. что почитать?

Классика

GIT

Советую (english)

GIT Concepts and Workflows

Continuous Integration

Все пушат прямо в master (main)

git clone ssh://user@host/path/to/repo
git add <some-file>
git commit
git push origin main

Важно всегда работать с последней версией master (main) чтобы не было конфликтов.

git pull
# vi /path/to/file
git add /path/to/file
git commit && git push origin main

pull rebase

Используя rebase во время pull вы не будете создавать дополнительный merge-коммит.

git pull --rebase origin main

Или настроить автоматический ребейз

git config pull.rebase true

Разрешение конфликтов

git status
# редактируете файлы с конфликтами
git add <file>
git rebase --continue

Git Feature Branch Workflow

Для каждой новой фичи или задачи создаётся новая ветка. Затем ветка сливается в основной код в master (main)

git checkout -b features/feature-xxx
# редактируем код
git add <files>
git commit
git push -u origin features/feature-xxx

Правила работы с ветками

Должно быть общее правило именования feature веток.

feature/<feature_name>

task/

Правила работы с ветками

Всегда начинайте feature ветку от текущего состояния основной ветки.

git pull  # git pull --rebase
git branch -b feature/<feature_name>

Правила работы с ветками

Перед созданием PR вливайте изменения из основной ветки. Все конфликты должны быть решены в вашей ветке!

git fetch origin main
git rebase

Правила работы с ветками

Долгоживущие feature ветки зло.

Держите не более 1-2 дней. Для этого четко описывайте задачу, которую хотите решить в ветке.

Правила работы с ветками

Пишите тесты на свой код!

После разрешения конфликтов слияния они вам здорово помогут.

GitFlow

  • Данная модель отлично подходит для организации рабочего процесса на основе релизов.
  • Работа по модели Gitflow предусматривает создание специальной ветки для исправления ошибок в рабочем релизе.

img

Правила работы с GitFlow

  1. Релизная ветка (master, main, trunk).
    • Всегда стабильна, готова к работе в любой момент времени.
    • Работают только лиды/синьоры.
    • Изменения только через Pull Request (PR) из develop или hot-fix веток.
  2. Основная ветка разработки (develop).
    • Допускается краткосрочная неработоспособность.
    • Работает вся команда.
    • Изменения напрямую или через PR из функциональных веток.
  3. Функциональные ветки (feature/), они же фича ветки.
    • Под каждого разработчика/фичу.
    • Изменения напрямую.
    • Порождается от develop ветки.

Gerrit

Gerrit это надстройка над GIT сервером. Он дополнительно даёт вам

  • Code Review
  • Контроль доступа к бранчам
  • История правок не засоряет log

img

Gerrit UI

img

Литература

DevOps

  • Coding
  • Building
  • Testing
  • Deploying (packaging, releasing)

Автоматизация DevOps

Jenkins

img

Спринт 10: Командная работа

img

Избегаем блокировок

  1. В первую очередь пишем модели БД.

    • Лучше всего, если каждая модель в отдельном файле.
    • Если модель для ForeignKey не существует, допустимо сделать IntegerField, затем заменить на ForeignKey.
  2. Если ваша ветка живет более 4-х часов, то вливайте изменения из основной ветки дважды в день. Все конфликты должны быть решены в вашей ветке!

  3. Поддерживайте тесную связь. Синхронизация Pull Request-ов, правок кода сильно ускорит работу над проектом. Задача лида быть всегда в курсе что происходит с проектом, кто над чем работает.

  4. Никогда не изменяйте историю

    git push -f

Командные процессы

  1. Ежедневные встречи (daily meetings). Если нужна помощь в проведении, приглашайте наставников.
  2. Планирование в начале проекта и по необходимости в ходе работы.
  3. Совместная работа в трекере задач (Trello/Jira и т.п.).
  4. Команда обсуждает вопросы, по которым требуется помощь и делегирует лиду обсуждение этих вопросов с наставником.

Вопросы-ответы

img