[sisyphus] [HOWTO] как я делал ктулху в git'е mutt1.5

Alexey I. Froloff raorn на immo.ru
Чт Сен 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/
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: Digital signature
Url     : http://lists.altlinux.org/pipermail/sisyphus/attachments/20070906/798ca879/attachment-0002.bin 


Подробная информация о списке рассылки Sisyphus