[sisyphus] [HOWTO] как я делал ктулху в git'е mutt1.5
Alexey I. Froloff
=?iso-8859-1?q?raorn_=CE=C1_immo=2Eru?=
Чт Сен 6 12:58:03 MSD 2007
Как вы все наверно знаете, наш mutt1.5 это такой mutt2ng-new с
большим количеством "левых" патчей. Из-за такого количества
каждое обновление версии превращается в изощрённую пытку для
мантейнера. По идее git должен бы помочь решить подобные
проблемы...
Сначала я посмотрел на kernel-image. Там каждый патч живёт в
отдельном бранче, перед релизом всё мержится в master. Примерно
так:
master
* merge-C
/|
/ * merge-B
/ /|
/ / * merge-A
/ / /|
/ / / * merge-upstream
/ / / /|
* | | | | patchC
| * | | | patchB
| | * | | patchA
\ \ \| |
+-+-* | upstream
| |
По каждому патчу конфликт разруливается сначала в patchX, потом в
merge-X. При обновлении версии upstream и/или patchX приходится
делать маленький закат солнца вручную с повторным разруливаением
всех конфликтов. Это не ядро и патчи имеют обыкновение
пересекаться во множестве мест.
Результат этого изврата ещё некоторое время можно будет наблюдать
в моём mutt1.5.git.
Есть второй способ, который посоветовал мне voins (на примере его
stklos.git и WindowMaker.git). upstream мержится в patchA,
patchA в patchB и так далее. При этом конфликты разруливаются
практически только один раз при мерже patchN-1 в patchN.
Картинко будет примерно такое:
master
*
|\
| * patchC
| |\
| | * patchB
| | |\
| | | * patchA
| | | |\
| | | | * upstream
| | | | |
Что делать при обновлении upstream и/или patchX?
1. upstream
patchA <- upstream
patchB <- patchA
...
master <- patchZ
2. patchX
branch patchX-tmp upstream
накладываем новый patchX в patchX-tmp
patchX-tmp <- patch(X-1)
patchX <- patchX-tmp
branch -d patchX-tmp
patch(X+1) <- patchX
...
master <- patchZ
3. patchX и upstream
До patch(X-1) поступаем аналогично 1., потом аналогично 2.
Надеюсь принцип ясен ;-)
P.S. Ниасилил куда это положить на wiki, да и само описание
довольно сумбурное.
--
Regards, Alexey I. Froloff
AIF5-RIPN, AIF5-RIPE
-------------------------------------------
Inform-Mobil, Ltd. System Administrator
http://www.inform-mobil.ru/
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: Digital signature
Url : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20070906/798ca879/attachment-0003.bin>
Подробная информация о списке рассылки Sisyphus