[devel] POLICY: Ручные и дикие gear репозитарии.
Igor Vlasenko
vlasenko на imath.kiev.ua
Ср Июл 21 21:46:31 UTC 2010
Уважаемые господа!
Писал недавно скрипт для обновления перловых пакетов.
Сначала написал обновление через src.rpm. Затем написал обновление
для тех .git, которые устроены, как после gear-srpmimport,
т.е. с исходниками в подпапке, потому что таких было большинство.
Но были еще и несколько git с апстримными исходниками в отдельной
ветке, смерженной в основную. Могли попасться, не сейчас,
так в будущем, другие варианты.
На первый взгляд, ситуация мрачная.
Надо поддерживать неопределенное число схем, и при этом еще
научить робота как-то отличать одну схему от другой.
Тем более, что у нас, похоже, есть репозитории, которые усложнены
до состояния роботонепробиваемости, как писалось в соседней ветке.
Однако, у задачи решение есть.
Прошу вникнуть в текст ниже и поддержать.
============================================
Определение 1. gear-репозиторий -- это git репозиторий,
из которого можно собрать пакет с помощью gear.
[т.е. git репозиторий, из которого с помощью gear
собрать пакет нельзя, не рассматриваем.]
Определение 2. gear-репозиторий назовем РУЧНЫМ, если
%{SOURCEx} исходники апстрима находятся в отдельных подпапках
и/ли отдельных ветках с тегами, указанными в директиве .gear/rules.
Определение 3. gear-репозиторий назовем ДИКИМ, если
он не ручной.
Наблюдение 1. для ручных gear-репозиториев существует алгоритм
обновления исходников.
Другими словами, для ручных gear-репозиториев можно написать
superpower-аналог утилиты gear-update, которая сможет
автоматически обновлять ручные gear-репозитории любого типа
(в частности, делать необходимые merge между бранчами,
в т.ч. с бранчами, из которых создаются патчи, и проставлять теги),
основываясь на имеющихся тегах и информации
из spec-файла и .gear/rules.
Похоже, мне не избежать в будущем написания такой утилиты
для роботов, но, думаю, людям тоже будет с ней удобнее.
Далее, из диких gear-репозитории можно выделить как подкласс
апстримные репозитории. Это пакеты, в которых автор является
одновременно и майнтайнером.
Наблюдение 2. Пакеты из апстримных репозиториев роботу обновлять
не нужно.
Остальные дикие gear-репозитории можно назвать псевдо-апстримные.
Наблюдение 3. В псевдо-апстримном репозитории роботу невозможно,
а человеку без бутылки тяжело отличить апстримный код от вкладв
майнтайнера. Поэтому такой gear-репозиторий неудобен для
совместной работы.
Пока с ним работает 1 человек, то все хорошо, но если
взялся кто-то другой, то часто проще такой репозиторий
выбросить и создать заново.
Разница между ними и апстримными как между сыроежкой зеленоватой
и бледной поганкой -- на вид еле заметна, но в случае ошибки ...
Давайте полиси примем, что если майнтайнер не апстрим,
то диких репозиториев не создавать.
--
Dr. Igor Vlasenko
--------------------
Topology Department
Institute of Math
Kiev, Ukraine
Подробная информация о списке рассылки Devel