[devel] IQ: git.altlinux.org: archive/Sisyphus conversion

Kirill Maslinsky =?iso-8859-1?q?kirill_=CE=C1_altlinux=2Eru?=
Чт Сен 14 20:05:45 MSD 2006


> Всего в этом архиве около 7000 имён исходных пакетов общим объёмом
> около 62Gb.  Весь этот архив можно импортировать в git-репозитории
> описанным выше способом, однако есть несколько препятствий:
> - С каждым обновлением Сизифа архив пополняется новыми пакетами; это
> значит, что одноразовый импорт не решает задачу полностью.
> - Объём архива настолько велик, что процесс импортирования займёт больше
> времени, чем обычно проходит между обновлениями Сизифа.
> - Некоторые пакеты переименовывались, и было бы хорошо отследить такие
> переименования для того, чтобы при импорте не потерять историю в момент
> переименования.  К сожалению, алгоритма выявления переименований у
> меня нет.

Можно построить такой алгоритм на основании такого соображения:
Основная сущность, которая наследуется от одного srpm файла 
к другому, если эти два файла представляют собой последовательные 
сборки одного пакета -- это changelog в spec-файле. 
Если же changelog пакета при каком-то с ним изменении оказался 
не унаследован, то, полагаю, можно довольно обоснованно считать 
это уже другим пакетом, и не отслеживать историю (раз уж она 
и так была утрачена).

Формальное правило может звучать так:
  - если последняя запись в changelog A.srpm совпадает с предпоследней в B.srpm, 
    то пакет A.srpm является следующей за B.srpm сборкой того же пакета. 
	Имена A и B при этом, естественно, значения не имеют.

Таким образом можно решить проблему переименований. 

Однако тут есть такой момент, что ряд сборок между A.srpm и B.srpm 
в Сизифе по каким-то причинам может отсутствовать, а записи в changelog 
для этих сборок имеются. Для разрешения этих случаев правило можно 
обобщить, заменив совпадение с предпоследней записью на совпадение 
с одной из предыдущих.

Это всё будет верно при условии, что 

(*) две changelog-записи никогда не совпадут случайно.

> - Были в истории Сизифа случаи, когда совершенно разные пакеты в разное
> время назывались одинаково, один такой пример (git) я уже приводил.
> Как обнаруживать такие коллизии автоматически, я тоже не знаю.

Вроде как этот случай можно также успешно разрешить из подобных соображений:
  - если A-V1.srpm и A-V2.srpm не имеют ни одной общей записи в changelog,
	то они принадлежат разным пакетам. Это можно обобщить на два множества 
	версий одинаково поименованных пакетов.

Естественно, этот принцип тоже будет работать, если верно (*)

> Несмотря на все эти вопросы, в каждом конкретном случае импорт пакета
> из архива Сизифа в git-репозиторий это вполне решаемая (как правило,
> легко решаемая) задача.

PS А я сначала подумал, что твои вопросы были риторические, и принялся
уже импортировать. ;)

-- 
Kirill Maslinsky
ALT Linux Documentation Team
http://heap.altlinux.ru
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20060914/932f471d/attachment-0001.bin>


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