Git/start2
< Git
Пример переноса пакета на git.alt на примере libunrar3. Предполагается, что доступ уже настроен.
- создаём где-нибудь какой-нибудь каталог, где будут храниться репозитарии, например ~/RPM/GIT и переходим в него.
- выполняем git clone git.alt:/archive/l/libunrar3. В результате получим репозитарий libunrar3 из хранилища пакетов, которые ещё ни разу не собирались через git.alt
- переходим в каталог libunrar3. (отдельный момент: в каталоге libunrar3/.git находится вся информация по репозитарию, включая копии файлов дерева исходников; мне понимание этого несколько помогло)
- git branch - выводит список веток. Сейчас там только sisyphus, так как пакет из git.alt:/archive
- создаём репозитарий на git.alt:
ssh git.alt init-db libunrar3
- репозитарий в git.alt:/archive больше не пригодится. Удаляем его из настроек git и добавляем вместо него только что созданный:
git remote rm origin git remote add origin ssh://git.alt/people/asy/packages/libunrar3.git
- git branch master - создаём ветку master.
- в принципе, уже можно перенести репозитарий на git.alt:
git push --all
- можно попробовать собрать пакет:
gear-rpm -ba libunrar3.spec
Больше, в общем-то, делать нечего, так как это пакет той же версии, что и в Sisyphus. Теперь сделаем обновление. В случае libunrar3 работаем c тарболом.
- переключаемся, допстим, на ветку master
git checkout master
- находясь в ~/RPM/GIT/libunrar3, выполняем (каталог внутри unrarsrc не совпадает с названием тарбола):
gear-update ../unrarsrc-3.8.5.tar.gz unrar
- удаляем некоторые ненужные файлы:
git rm unrar-3.5.3_fix.patch
- добавляем некоторые нужные файлы:
git add unrar-3.8.5_fix.patch
- правим что надо, spec в частности, после чего коммитим изменения:
git commit -a -m "New version"
- На самом деле, перед коммитом не плохо бы попробовать собрать пакет. Для этого можно воспользоваться утилитой из etersoft-build-utils (gear-rpm соберёт правильно только после git commit, что может оказаться не удобно):
rpmbb libunrar3.spec
- выполняя поочерёдно git checkout master и git checkout sisyphus, можно наблюдать, как меняются местами два дерева исходников.
- После проверок можно смержить sisyphus c master
git checkout sisyphus git merge master
- синхронизируем git.alt с локальным репозитарием:
git push --all
Апдейт пакета сделан, пора готовить задание на сборку. Решаем, что в Сизиф собираем ветку sisyphus.
- Вывод команд не приводися.
git checkout sisyphus git tag -s -m "libunrar3-3.8.5-alt1" libunrar3-3.8.5-alt1 git push origin --tags ssh git.alt build packages/libunrar3 libunrar3-3.8.5-alt1
Ну вот, очередная версия пакета собрана в Sisyphus через git.alt. Если, конечно, там ошибок не получится.