From: Igor Vlasenko <vlasenko@imath.kiev.ua> To: ALT Linux Team development discussions <devel@lists.altlinux.org> Cc: Anton Farygin <rider@altlinux.com> Subject: [devel] I: gear-uupdate second-announce. Date: Wed, 11 Jun 2014 20:10:00 +0300 Message-ID: <20140611170959.GA24359@dad.imath.kiev.ua> (raw) In-Reply-To: <53981850.4030805@altlinux.com> On Wed, Jun 11, 2014 at 12:50:24PM +0400, Anton Farygin wrote: > следующий этап - научить rpm-uscan обновлять правильным образом git Это давно пройденный этап :) Специально для rpm-uscan я когда-то написал утилиту gear-uupdate(1) которая тем и занимается, что обновляет правильным образом git из исходников. Поскольку утилита малоизвестная, воспользуюсь случаем, чтобы ее повторно анонсировать. > Оно умеет читать .gear-rules ? или какие-то настройки из git ? Именно. gear-uupdate(1) -- это обертка над парой утилит gear-uupdate-prepare(1) и gear-uupdate-execute. gear-uupdate-prepare c помощью библиотеки perl-Gear-Rules читает .gear[-/]rules, изучая директивы tar и diff, вычисляет, в какой ветке (и каком подкаталоге если есть) находятся исходники, есть ли отдельные ветви для патчей, если исходники в отдельной ветке, то как ее потом мержить в ветку с .gear (просто или с -s ours). Поддерживаются все основные разумные схемы gear. > у меня исходники лежат в бранче upstream и мержатся в master. Эта схема в числе поддерживаемых :) > Но не всегда ;) Проверить, поддерживается ли конкретная схема gear репозитория, можно с помощью утилиты gear-rules-verify. gear-rules-verify выдаст подробную диагностику, совместим ли репозиторий с gear-uupdate(1). В частности, если в репозитории есть коммиты, автор которых не состоит в team, то gear-uupdate откажется работать. Логика здесь в том, что похоже, репозиторий ранее обновлялся из апстримного git/svn/otherVCS, а теперь мы хотим обновить его из тарбола. как правило, так делать не надо. Вместо полученного треш-репозитория лучше завести новый git репозиторий или залить обновление как srpm. А так, большое количество схем gear репозиториев поддерживается. Руками его запускают так: gear-uupdate --upstream-version 6.8.9.3 ImageMagick-6.8.9-3.tar.xz При первом запуске лучше не запускать сразу 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/ будет что-то вроде 01-checkout-and-update-upstream-branch.sh 02-merge-upstream-to-patch1-branch.sh ... 07-merge-upstream-to-patch6-branch.sh 10-merge-to-main-and-update-spec-and-tags.sh Эти скрипты можно просмотреть и убедиться еще раз, что робот понял структуру репозитория правильно. После чего их можно выполнить с помощью gear-uupdate-execute. Далее уже сразу можно запускать gear-uupdate. Впрочем, rpm-uscan (и gear-cronbuild) обучен запускать gear-uupdate самостоятельно. gear-cronbuild при наличии watch файла и отсутствии cronbuild скриптов просто молча и принудительно запускает gear-uupdate. rpm-uscan с обычным watch файлом так не делает. Есть 2 варианта, как заставить rpm-uscan сразу после скачивания вызвать gear-uupdate: 1) вызвать rpm-uscan с опцией, rpm-uscan --force-action gear-uupdate 2) добавить в watch файл магию - добавить еще одну колонку, в которой написать uupdate (можно gear-uupdate). uupdate -- это магическая утилита из debian, которая обновляет debian репозиторий. у нас gear репозиторий, поэтому ей на замену я написал gear-uupdate, которая обновляет gear репозиторий, так, чтобы она была полностью совместима с debian --- все, что написано в uscan(1) (тж. rpm-uscan(1)) будет работать и у нас. -- I V
next prev parent reply other threads:[~2014-06-11 17:10 UTC|newest] Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-06-10 14:12 [devel] I: watch.altlinux.org теперь обрабатывает и watch-файлы Igor Vlasenko 2014-06-10 14:36 ` Michael Shigorin 2014-06-10 16:21 ` Igor Vlasenko 2014-06-11 7:01 ` Paul Wolneykien 2014-06-11 7:13 ` Michael Shigorin 2014-06-11 8:50 ` Anton Farygin 2014-06-11 9:00 ` Michael Shigorin 2014-06-11 17:10 ` Igor Vlasenko [this message] 2014-06-11 9:02 ` Anton Farygin 2014-06-11 17:16 ` Igor Vlasenko 2014-06-12 5:05 ` Anton Farygin 2014-06-12 8:08 ` Michael Shigorin 2014-06-12 16:25 ` Igor Vlasenko 2014-06-13 8:05 ` Anton Farygin 2014-06-13 14:20 ` Денис Смирнов 2014-06-13 18:24 ` Anton Farygin 2014-06-13 19:10 ` Денис Смирнов 2014-06-13 19:15 ` Anton Farygin 2014-06-13 19:18 ` alexei 2014-06-13 19:39 ` Anton Farygin 2014-06-13 14:49 ` Igor Vlasenko 2014-06-13 18:28 ` Anton Farygin 2014-06-13 19:00 ` Anton Farygin 2014-06-13 19:52 ` Igor Vlasenko 2014-06-14 22:20 ` Igor Vlasenko 2014-06-15 11:40 ` Anton Farygin 2014-06-20 9:11 ` Anton Farygin 2014-06-20 11:49 ` Igor Vlasenko
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20140611170959.GA24359@dad.imath.kiev.ua \ --to=vlasenko@imath.kiev.ua \ --cc=devel@lists.altlinux.org \ --cc=rider@altlinux.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git