9

Click here to load reader

Общепринятые правила коммитов, патчей

  • Upload
    unomano

  • View
    162

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Общепринятые правила коммитов, патчей

Общепринятые правила коммитов, патчей

Виктор Полстюк

Page 2: Общепринятые правила коммитов, патчей

Зачем работать с апстримом

● Улучшение качества кода за счет получения

ревью от экспертов

● Можно узнать как сделать то, что вам надо

● Обмен новыми фичами

● Обновление дерева исходников

● Обмен багфиксами

Page 3: Общепринятые правила коммитов, патчей

Куда апстримить

● Linux kernel

● U-boot

● Buildroot

● OpenEmbedded

● ELDK

● OpenWRT/LuCI

● пакеты (например OpenOCD, gpsd)

● русская локализация

● …

Page 4: Общепринятые правила коммитов, патчей

Последовательность

● Разработка новой фичи или фикс бага

● Отсылка патча мэйтейнеру и в рассылку

● Подождать пару дней

● Внять коментариям и повторнно отослать

патч

● Повторить предыдущий шаг

● Дождаться интеграции

● Поддерживать свой код иначе его выпилят

Page 5: Общепринятые правила коммитов, патчей

Лицензия

● Совместимость нового кода с лицензией

проекта

● Согласие заказчика на коммит кода,

написанного с нуля

● Обязательно использовать тег Signed-off для

своего кода

Page 6: Общепринятые правила коммитов, патчей

База для коммита

● Дерево исходников в репозитории

подсистемы

● Дерево исходников в основном репозитории

● Последний релиз

Page 7: Общепринятые правила коммитов, патчей

Перед отсылкой

● Соответствие кодинг стилю (например,

scripts/checkpatch.pl в ядре)

● Описание коммита (shortlog и descrition)

● Перегенерить коммит относительно свежего

дерева исходников

● Протестировать

● Посмотреть обсуждение в рассылке по этой

теме

Page 8: Общепринятые правила коммитов, патчей

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

● Большие изменения разбивать на серию

коммитов (например, по подсистемам)

● Каждый коммит должен быть минимален

(проще ревьюить)

● Ни один коммит не должен ломать сборку

(функционал), чтобы можно было делать

bisect

Page 9: Общепринятые правила коммитов, патчей

Пример

● Написал драйвер для м/сх SX1512 для проекта Engineering-

● git add drivers/gpio/sx151x.c …

● git commit -s # Добавил описание

● git format-patch -1 # Количество коммитов

● git send-email *.patch --to [email protected]

● Получил коментарий и исправил драйвер

● https://www.mail-archive.com/[email protected]/msg124699.html

● git commit -s --amend # Обновил коммит

● git format-patch -1 --subject-prefix="PATCH v2" # Перегенерил патч

● git send-email *.patch --to [email protected]

● Патч интегрировали

● https://www.mail-archive.com/[email protected]/msg125447.html

● Коммит попал в релиз U-boot-2014.01

● http://www.denx.de/wiki/U-Boot/UbootStat_2014_01

● Обновил U-boot до 2014.01 на проекте Engineering-