Click here to load reader
Upload
unomano
View
162
Download
0
Embed Size (px)
Citation preview
Общепринятые правила коммитов, патчей
Виктор Полстюк
Зачем работать с апстримом
● Улучшение качества кода за счет получения
ревью от экспертов
● Можно узнать как сделать то, что вам надо
● Обмен новыми фичами
● Обновление дерева исходников
● Обмен багфиксами
Куда апстримить
● Linux kernel
● U-boot
● Buildroot
● OpenEmbedded
● ELDK
● OpenWRT/LuCI
● пакеты (например OpenOCD, gpsd)
● русская локализация
● …
Последовательность
● Разработка новой фичи или фикс бага
● Отсылка патча мэйтейнеру и в рассылку
● Подождать пару дней
● Внять коментариям и повторнно отослать
патч
● Повторить предыдущий шаг
● Дождаться интеграции
● Поддерживать свой код иначе его выпилят
Лицензия
● Совместимость нового кода с лицензией
проекта
● Согласие заказчика на коммит кода,
написанного с нуля
● Обязательно использовать тег Signed-off для
своего кода
База для коммита
● Дерево исходников в репозитории
подсистемы
● Дерево исходников в основном репозитории
● Последний релиз
Перед отсылкой
● Соответствие кодинг стилю (например,
scripts/checkpatch.pl в ядре)
● Описание коммита (shortlog и descrition)
● Перегенерить коммит относительно свежего
дерева исходников
● Протестировать
● Посмотреть обсуждение в рассылке по этой
теме
Последовательность коммитов
● Большие изменения разбивать на серию
коммитов (например, по подсистемам)
● Каждый коммит должен быть минимален
(проще ревьюить)
● Ни один коммит не должен ломать сборку
(функционал), чтобы можно было делать
bisect
Пример
● Написал драйвер для м/сх 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-