[devel] I: http://www.altlinux.org/Gear/gear-uupdate
Igor Vlasenko
vlasenko на imath.kiev.ua
Пт Июн 13 00:54:13 MSK 2014
Господа,
Выложил документацию по gear-uupdate на
http://www.altlinux.org/Gear/gear-uupdate
Из наиболее важного, того, что не было в предыдущем письме -
описана логика работы утилит - сначала, не трогая репозитория,
одна утилита (gear-uupdate-prepare) компилирует логику обновления
репозитория в промежуточный код (набор shell скриптов).
Эти скрипты можно просмотреть, проверить и пошагово запустить
самостоятельно либо с помощью другой утилиты,
сохраняя полный контроль над процессом обновления.
=== раздел 3. запуск вручную ===
gear-uupdate(1) -- это обертка над парой утилит gear-uupdate-prepare(1) и gear-uupdate-execute.
Руками gear-uupdate запускают так:
gear-uupdate --upstream-version 6.8.9.3 ImageMagick-6.8.9-3.tar.xz
либо так
gear-uupdate ImageMagick-6.8.9-3.tar.xz 6.8.9.3
При первом запуске лучше не запускать сразу gear-uupdate, а запустить
gear-uupdate-prepare --upstream-version 6.8.9.3 ImageMagick-6.8.9-3.tar.xz
gear-uupdate-prepare сначала выполнит проверки из gear-rules-verify.
Затем, gear-uupdate-prepare (ничего не меняя в репозитории) генерирует набор shell скриптов. Эти скрипты могут быть созданы в корне gear репозитория, если апстрим в подкаталоге в текущей ветке. в остальных случаях скрипты надо прятать от git, поэтому они создаются в папке .git/uupdate/.
После выполнения gear-uupdate-prepare в .git/uupdate/ будет что-то вроде
__~.uupdate-step-001-checkout-and-update-upstream-branch.sh
__~.uupdate-step-002-merge-upstream-to-patch1-branch.sh
...
__~.uupdate-step-006-merge-upstream-to-patch5-branch.sh
__~.uupdate-step-007-merge-upstream-to-master.sh
__~.uupdate-step-008-update-spec-and-tags.sh
Эти скрипты можно просмотреть и убедиться еще раз, что робот понял структуру репозитория правильно. После чего их можно выполнить с помощью gear-uupdate-execute.
Утилита gear-uupdate-execute по очереди выполняет сгенерированные скрипты, удаляя скрипт, если он отработал нормально. Во многих схемах устройства gear репозитория изменения автора и изменения майнтайнера мержатся с помощью git, при чем, возможно, ветвь с оригинальными исходниками необходимо будет мержить в несколько ветвей. Для таких операций достаточно часто возникают конфликты.
Если конфликт при merge произошел, то gear-uupdate-execute остановится на скрипте, который завершился с ошибкой. git при этом будет в той ветви, в которой происходил merge. В таком случае майнтайнеру необходимо будет вручную разрешить конфликт в исходных файлах, и закоммитить изменения в git. При этом скрипт __~.uupdate-step-*, на котором произошел сбой, можно использовать в качестве готового шаблона команд. Затем можно удалить этот скрипт, и опять запустить gear-uupdate-execute, который выполнит оставшиеся скрипты.
Если убедиться, что gear-uupdate-prepare/gear-uupdate-execute отрабатывают нормально, далее уже сразу можно запускать gear-uupdate.
--
I V
Подробная информация о списке рассылки Devel