On Tue, Apr 10, 2007 at 12:01:51AM +0400, Dmitry V. Levin wrote: > On Mon, Apr 09, 2007 at 11:52:27PM +0400, Alexey Tourbin wrote: > > On Mon, Apr 09, 2007 at 10:06:52PM +0400, Eugene Prokopiev wrote: > > > http://wiki.sisyphus.ru/devel/gear/ImportUpstreamVBranch > > > http://wiki.sisyphus.ru/devel/gear/ImportSeparateUpstream > > > > В общем, я бы не стал делать, как там написано. > > Ты имеешь в виду первый рецепт (когда есть upstream scm) или второй рецепт > (когда есть только upstream tarball)? У мутта 1.5 вроде тоже есть git. В случае с тарболлами иногда удобнее деражть содержимое тарболла в подкаталоге, а патчи держать отдельно; а иногда удобнее прикладывать патчи к тарболлу, тогда подкаталог не нужен (а spec положить прямо в каталог, это не криминально). Ну, если тарболлы выходят достаточно часто, и если изменения в них не очень большие, тогда есть надежда на достаточно простой merge с новым тарболлом, и можно патчи прикладывать. Если же в в каждом очередном тарболле всё переделывают, и в результате мержа получается много конфилктов, тогда проще держать патчи отдельно. Также это касается некоторых случаев, когда большинство патчей имортируется откуда-то ещё, например из федоры. Я например не знаю, как мне сейчас с netpbm в этом отношении быть. Всё время откладываю его в долгий ящик. :( > > Могу подробнее объяснть, как я бы сделал, если не понятно. > Пока не понятно. ;) Допустим что есть апстримный project.git, в котором есть таги 1.1, 1.2, 1.3 и основной бранч master, который содержит эти таги. (На самом деле не важно, git это или git-svnimport или git-cvsimport.) Допустим, что у нас есть project-1.1.src.rpm и project-1.2.src.rpm. Мы хотим импортировать эти src.rpm'ы и собрать новый релиз 1.3 (или прямо origin). Я бы имортировал вот как. Сначала клонируем апстрим, имеем бранч origin. Преподолжим, что в src.rpm'ах есть всего один "большой" тарболл с подкаталогом, а других тарболлов нет (но, возможно есть патчи). Тогда можно применить модифицированный gear-srpmimport, который не создает подкаталога, чтобы избежать перемещения файлов. Импортируем src.rpm'ы, привязывая их к апстримным тагам. $ git-checkout -b srpms 1.1 $ gear-srpmimport project-1.1.src.rpm $ git-branch foo 1.2 $ git-pull --no-commit -s ours . foo && git-branch -D foo $ gear-srpmimport project-1.2.src.rpm Здесь происходит merge апстримного тага 1.2 и нашей предыдущей сборки 1.1-alt1. С первого раза этот трюк, наверное, сложно понять. К сожалению, я не знаю, как это можно предельно понятно объяснить. Теперь мы стоим на бранче srpms, и на него показывает таг 1.2-alt1. Перименовываем бранч srpms в бранч master и продолжаем с ним работать как с основным бранчем для подготовки пакетов. $ git-branch -D master $ git-checkout -b master srpms $ git-branch -D srpms Нужно проверить, что git-diff 1.2..1.2-alt1 показывает только *.spec и .gear-rules (кроме, быть может, $Id$ и прочей мишуры). Теперь можно приложить патчи, если они есть, прямо к дереву исходников. Если приложили патчи, желательно добавить %release в название тарболла и в .gear-rules. Также желательно разжать тарболл, чтобы был просто *.tar. Дальше делаем $ git-pull . origin Наша сборка переместилась на origin. Теперь можно сделать $ gear --rpm -- rpm -bc Если всё работает, то остается исправить version и release в спеке на 1.3-alt1 (или 1.4-alt0.1) и сделать gear-commit -a.