[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