[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