On Thu, Feb 19, 2009 at 12:44:30PM +0200, Igor Vlasenko wrote: > On Thu, Feb 19, 2009 at 10:09:26AM +0300, Alexey Tourbin wrote: > > Вы хотите оставить репозитарий в разломанном состоянии "на честном > > слове", что со временем пойдут какие-то многоступенчатые процессы, > > и низшая углеродная фракция реактивного двигателя со временем отпадёт, > > как глазьевская партия "Родина", как несмысленные галаты, которые отпали > > от благодати. > > > > Но в этом же самое время репозитарием пользуются другие люди (а также > > на нём собираются пакеты). > > > > Задача состоит в том, чтобы не допускать разлома репозитария вообще, > > то есть допускать только транзакционные обновления пакетов, при которых > > сохраняется целостность репозитария. > Хороший репозитарий = мертвый репозитарий :( Отчасти -- да. Поэтому некоторые предпочитают сидеть на бранче, и даже агитируют демагогию про стабильность и нестабильность. Как бы избавиться от "стабильности" (хм, то есть от "проблемы стабильности") и прикрыть пространство для демагогии altogether? > Я повторю, есть опасность вместе с анметами душить инновации. Запретив анметы, мы даем взамен механизм заданий и транзакций. Этого механизма раньше не было, и некоторые анметы были неизбежны. А теперь всё изменилось. В задании могут находиться несколько пакетов. Промежуточные анметы (напр. между сборкой первого и второго пакета) никого не волнуют. Играет роль только начальное состояние и конечное состояние. Задание применяется транзакционно. Конечное состояние должно быть не хуже начального. По-моему, это решает "проблему стабильности" (по крайней мере, на уровне формальных характеристик репозитария). Локальные/промежуточные разломы допустимы, глобальные -- нет. Про бутстрап отдельный разговор. Сейчас в задание нельзя добавлять два одинаковых пакета (по имени, и вообще пересекающихся). Вообще, условия добавления пакетов в задание могут быть более или менее жесткими. Я изначально планировал довольно жесткие условия (можно только добавлять новые пакеты), но Дмитрий разрешил удалять пакеты из задания. В какой-то степени семантику сборки задания можно ещё немного ослабить. Но сематнику заданий нельзя совсем ослабить, не нарушив некоторых базовых условий. Базовые условия связаны с явным отслеживанием взаимного влияния между пакетами. В общем бутстрап и базовые условия -- это очень головоломная тема. Если оставить бутстрап в стороне, то всё остальное в принципе решается с помощью обычных заданий. > Например, я не готов пока переезжать на gear. > У меня обьем работы удается сделать только за счет > тотальной автоматизации всех рутинных процессов. > Адаптировать инфраструктуру под git > (почему это дожна быть приоритетная задача?) > это полгода а то и полтора. Заливайте N пакетов поряд. Это будет задание. Если задание обламывается, тогда чините что сломалось, и заливайте N+1 пакет, N пакетов заново и один новый. В принципе это будет уже другое задание, но это эквивалентно добавлению нового gear-репозитария в "нормальное" задание. И так пока всё не починится. > > Робота будет обмануть сложнее, когда тестовая пересборка пакетов > > станет обязательным условием. > > Гм. IMHO, хотя бы наладить еженедельную пересборку, > очень уж она ежемесячной выглядит. > > И вот допустим до этого времени возникла потребность > что-то обновить. Робот уперся. > И что тогда? Выбрасывать java-пакеты из Сизифа? > В ручном режиме сопровождать больше 100-200 пакетов я не потяну :( Зачем надо выбрасывать java-пакеты из Сизифа? Посмотрите на ситуацию симметрично: кто-то пытается разломать сборку Джавы. Из-за этого его пакеты не прходят, а Джава продолжает нормально собираться. То есть, когда ситуация наладится, верно будет следующее. В текущем состоянии S_k все пакеты устанавливаются и пересобираются. Каждая транзакция на основе текущего состояния S_k готовит новое состояние S_{k+1}. В новом состоянии все пакеты должны устанавливаться и пересобираться, иначе транзакция не проходит. > Альтернативно, "заморозить" репозиторий? > Так сказать, трупное окоченение. > > Кому нужен стабильный протухший репозитарий? А кому нужен репозитарий, в котором пакеты не устанавливаются и не пересобираются? Это уже не репозитарий, а набор файлов с расширением *.rpm. > Кому нужен, тот найдет в загашниках запылившийся > Mandrake Russian Edition Spring 2001.