[devel] gear - topic branches

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Вс Фев 4 14:17:09 MSK 2007


On Sun, Feb 04, 2007 at 12:10:11PM +0200, Nick S. Grechukh wrote:
> с гит разобрался, разбираюсь с gear. кажется, вполне реально держать
> сторонние патчи в отдельных topic branch и научить .gear-rules делать
> из них диффы.

С этим есть только одна проблема, для которой совершенно не видно
решения: что делать, если изменения, вносимые несколькими различными
патчами, пересекаются?  В общем случае может понадобиться при
объединении нескольких бранчей делать нетривиальные изменения (даже в
случае, когда явных конфликтов вроде бы нет - например, один патч
может менять какой-то интерфейс и исправлять код, где этот интерфейс
использовался, а другой - добавлять новый модуль, пользующийся этим
интерфейсом; в этом случае при объединении этих патчей потребуется
модифицировать и этот новый модуль).

> непонятно сейчас ровно одно:
> 
> пусть в бранче upstream лежит xmms-1.2.1. из него я делаю бранч
> rusxmms и через patch < rusxmms.patch прикладываю.
> в master я делаю pull . upstream, и в  .gear-rules говорю делать дифф
> upstream-rusxmms. или master-rusxmms? в .src.rpm оно лежит отдельным
> патчем. отлично.

Отдельным патчем не получится (разве что этот бранч там единственный,
и заведён только с целью не класть файлы типа .gear-rules и *.spec в
дифф).  В общем случае получится только один патч со всеми изменениями
(например, diff: @version@:. .).

> в какой-то момент git fetch upstream вытягивает мне 1.2.3. что я
> должен сделать -
> git checkout master и опять git pull . upstream ? а что потом делать с
> бранчем rusxmms - rebase что ли? иначе ведь дифф будет содержать откат
> с upstream-1.2.3 до rusxmms-1.2.1.

Зависит от того, что произошло с патчем и апстримом.  Например, можно
просто смержить новую версию апстрима в этот бранч - так имеет смысл
сделать, если обновлённого патча для этой версии апстрима пока не
существует.  Если же есть новый патч, можно откатить в бранче коммит,
накладывавший предыдущую версию патча (чтобы не возиться с
конфликтами, которые всё равно устранены в новом патче), смержить
новую версию (в данном случае это будет trivial merge), после чего
наложить обновлённый патч.

Сразу мержить новую версию апстрима в master в принципе необязательно
(иначе при наличии конфликтов их все придётся разгребать одной большой
кучей).  Возможно, придётся сначала вышеописанным способом перевести
все бранчи на новую версию, потом смержить нужные бранчи в какой-то
newmaster, и только потом мержить этот newmaster в master.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?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/devel/attachments/20070204/e9726769/attachment-0001.bin>


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