[devel] diff in .gear-rules
Pavel Wolneykien
=?iso-8859-1?q?manowar_=CE=C1_altlinux=2Eorg?=
Пт Окт 17 18:45:45 MSD 2008
Grigory Batalov <bga на altlinux.org> wrote:
> Можно ли заставить директиву diff из .gear-rules игнорировать появление
> новых файлов? Т.е. вместо "diff -ruN" запускать "diff -ru".
> И если нельзя, то как сделать, чтобы было можно? =)
Пользуясь случаем, хочу поделиться опытом, как я вчера
бэкпортировал xlock.
Значит дело было так.
* * *
Жил был репозиторий и было у него 3 бранча:
upstream
add-icons
pam.d
В первом лежали исходные файлы заморские, с tux.org взятые, версии
5.27. В втором иконки расписные, разных размеров. А в третьем файлы
конфигурационные большой важности.
И было у Апстрима два сына:
-- upstream
|-- fix-install-mode
|-- pam-integration
И хранили они копии файлов, доставшихся им от отца. Первый сын был
по натуре консерватором и только один файл у него был изменён для
лучшей установки. А второй сын потокал прогрессу и новый код добавил сразу
в три файла.
И настало время сборки и пришёл тогда Повелитель.
* master
upstream
fix-install-mode
pam-integration
add-icons
pam.d
Расставил он теги по бранчам, обозначив тем самым кому на сборку
приходить.
upstream v5.27
fix-install-mode imode-5.27
pam-integration pam-integ-1.0
add-icons icons-1.0
pam.d pam.d-1.0
И взял он тогда Шестерни могучие и приказал им:
tar.gz: v на version@:xlockmore
tar.gz: icons-1.0:icons name=@name на -@version на -icons
tar: pam.d-1.0:pam.d name=@name на -@version на -pam.d
diff: v на version@:xlockmore imode-5.27:xlockmore name=install-mode.patch
diff: v на version@:xlockmore pam-integ-1.0:xlockmore name=pam-integration.patch
Словом "@version@" значение "5.27" обозначив.
Заскрежетали Шестерни и остановились, сказав: "Tag is not an ancestor
of current HEAD".
Взял тогда Повелитель и соединил всех кого отметил вместе, и заключил в
себе:
* master: v5.27--icons-1.0--pam.d-1.0--imode-5.27--pam-integ-1.0--HEAD
Завертелись тогда Шестерни и собрался пакет новёхонький, пропатченный.
Прошёл день, два и захотелось собрать пакет старый, надёжный, но тоже
на манер нового пропатченный. И появился тогда в репозитории новый
бранч в который были записаны исходные файлы старые, проверенные:
* branch-4.0 v5.22
master
upstream v5.27
fix-install-mode imode-5.27
pam-integration pam-integ-1.0
add-icons icons-1.0
pam.d pam.d-1.0
И задумал Четвёртый как Повелитель, всё в себе объединить. Сначала
взял он "icons-1.0" и "pam.d-1.0", и возрадовался уже, так всё у него
шло хорошо! Но вот пришёл к нему "imode-5.27" и захлестнула бедного
Четвёртого волна изменений конфликтных, и сгинул он под ней!
И решено тогда было на помощь премудрость машинную призвать. И снова
появился Четвёртый, но не сам по себе, а как потомок Апстрима:
master
upstream v5.27
fix-install-mode imode-5.27
pam-integration pam-integ-1.0
* branch-4.0
add-icons icons-1.0
pam.d pam.d-1.0
Имел новый Четвёртый слабость к версиям старым, надёжным. Поэтому
заменил он множество новых файлов, доставшихся ему от отца, старыми,
понизив версию дистрибутива до 5.22, о чём провозгласил, тег установив с
аннотацией в красочной рамке.
* branch-4.0 v5.22.
Дальше нужно ему было в себе всех своих братьев и друзей объединить, к
сборке готовясь. Сначала как и прежде, взял он "icons-1.0" и
"pam.d-1.0", которые влились в него без возражений. И вот подошёл
"imode-5.27", но будучи братом кровным Четвёртого, только отличие своё
от отца ему передал, сработала премудрость машинная! Четвёртый обозначил
этот знаменательный момент тегом "v5.22-p0". Другой его брат,
"pam-integ-1.0" так же поступить хотел, и лишь небольшой конфликт у них
возник. Поспорили братья немного и помирились, свою дружбу другим тегом
отметив: "v5.22-p1". Так Четвёртый, подобно Повелителю, объединил в себе
всех для сборки отобранных:
* branch-4.0: v5.27--(v5.22)--icons-1.0--pam.d-1.0--imode-5.27(v5.22-p0)--pam-integ-1.0(v5.22-p1)--HEAD
И взял он Шестерни могучие и приказал им:
tar.gz: v на version@:xlockmore
tar.gz: icons-1.0:icons name=@name на -@version на -icons
tar: pam.d-1.0:pam.d name=@name на -@version на -pam.d
diff: v на version@:xlockmore v на version@-p0:xlockmore name=install-mode.patch
diff: v на version@-p0:xlockmore v на version@-p1:xlockmore name=pam-integration.patch
Словом "@version@" значение "5.22" обозначив.
И завертелись Шестерни, и последовательно между собой теги сравнивая,
патчей наделали. И не было в тех патчах ничего лишнего, и накатились они
славно. И собрался пакет, хоть и старый, но надёжный, с новыми заплатами.
С тех пор так и повелось. Если какому сыну захотелось пакет собрать,
он братьев своих к себе на пир созывает, с каждым спорит, но неизменно
мириться и тег устанавливает. Шестерни потом с этих тегов патчи творят,
последовательно их между собой сравнивая. И выходят у них пакеты
славные. А чужаку со стороны так пакет не в жизнь не собрать!
* * *
Вот собственно и всё. Не уверен что это универсальный и вообще верный
рецепт, но я вчера использовал именно его. Результат можно увидеть в
/people/manowar/xlockmore.git. Поддержку и конструктивную критику приму
с радостью!
Павел.
Подробная информация о списке рассылки Devel