From: Eugene Prokopiev <prokopiev@stc.donpac.ru> To: ALT Devel discussion list <devel@lists.altlinux.org> Subject: [devel] Еще одно HOWTO про сборку пакета в git.alt и интеграцию с upstream scm Date: Mon, 09 Apr 2007 22:06:52 +0400 Message-ID: <461A80BC.30606@stc.donpac.ru> (raw) Здравствуйте! Нечто подобное уже описывалось здесь: http://wiki.sisyphus.ru/devel/gear/ImportUpstreamVBranch http://wiki.sisyphus.ru/devel/gear/ImportSeparateUpstream Но в процессе выполнения у меня возникло множество вопросов, поэтому я попытался описать примерно то же самое, но более доступно для таких, как я сам ;) Отправляю пока сюда, а не в вики, потому что надеюсь на конструктивную критику: очень интересно, что я сделал неправильно и не оптимально. Также прошу дополнить пример соответствующими примерами для работы с svn и cvs (у меня в качестве upstream scm рассматривается только git, о своих проблемах с svn я писал несколько выше) Спасибо всем, кто мне помогал: Алексею Авдееву, Владимиру Камарзину, Сергею Власову и многим другим ... ------------------------------------------------------------------------ << Сопровождение пакета в git.alt и взаимодействие с upstream scm на примере dbmail >> Мне удобнее всего вести разработку в 2-х бранчах: 1) dbmail_2_2 - импортируется из upstream scm, причем только тот бранч, который соответствует версии нашего пакета 2) srpms - все, что необходимо для сборки пакета В самом начале необходимо создать каталог dbmail, в котором будет вестись разработка, и инициализировать репозитарий c помощью git-init-db, перейдя в этот каталог. Это необходимо сделать каждому разработчику, принимающему участие в разработке пакета. Затем необходимо импортировать содержимое последнего пакета (можно не только последнего) в в бранч srpms репозитария с помощью gear-srpmimport --import-only, перейти в бранч rpms с помощью git-checkout и удалить распакованные исходники (git-rm -r -f dbmail), т.к. мы будем генерировать тарболл с исходниками из бранча upstream scm. Эта операция выполняется один раз одним разработчиком. Остальные операции будут выполняться разработчиками регулярно по мере необходмости: 1) Импорт из upstream scm и сборка пакета: * для git: git-fetch [url] [remote tag]:[local tag] - в нашем случае команда будет выглядеть так: git-fetch http://nfg3.nfgs.net/git/dbmail.git dbmail_2_2:dbmail_2_2 * для svn: ? * для cvs: ? После импорта необходимо перейти в новый бранч (git-checkout dbmail_2_2) найти таг, на основе которого будет генерироваться тарболл, или создать его с помощью git-tag, указав идентификатор коммита или имя бранча - в этом случае будет взят последний на момент создания тага коммит в бранче. Дерево git удобнее всего изучать с помощью gitk --all, список тагов - с помощью git-show-ref. В нашем случае команда создания тага будет выглядеть так: git-tag -a -m 'new dbmail 2.2.4 09.04.2007 21:40' dbmail/2.2.4.200704092140 a42aa96f31a555c2b20d600cdd6e961c0d9cfb67 Соданный таким образом новый или уже существующий коммит необходимо подшить к бранчу srpms (предварительно перейдя в него - git-checkout srpms), чтобы он был доступен при генерации тарболла: git-merge -s ours 'Using upstream branch' HEAD dbmail/2.2.4.200704092140 Затем необходимо обновить .gear-tags с помощью gear-update-tag -a Идентификатор тага необходимо указать в файле .gear-rules, заменив строку, начинающуюся с tar.[gz|bz2] на: tar.[gz|bz2]: [tag]:. name=[tarball] В нашем случае запись будет основана на текущей дате/времени импорта из upstream scm и будет выглядеть так: tar.gz: dbmail/2.2.4.200704090940:. name=dbmail-2.2.4.git200704090940 После этих подготовительных операций необходимо описать в спеке, что же мы сделали (как минимум увеличить номер версии и добавить запись в %changelog), и попытаться собрать src.rpm с помощью: gear --commit --rpmbuild -- rpm -bs --nodeps --sign и gear --commit --hasher -- hsh ~/hasher/ Если все прошло удачно, можно закоммитить изменения: gear-commit -a Полезно предварительно определить переменную EDITOR, чтобы для редактирования сообщений использовался наш любимый текстовый редактор. 2) Выгрузка изменений в локальном репозитарии на git.alt: Для выгрузки необходимо создать файл .git/remotes/origin с таким содержимым: URL: git.alt:packages/dbmail.git Push: refs/heads/*:refs/heads/* Push: refs/tags/*:refs/tags/* Выгружать можно командой git-push 3) Загрузка изменений из git.alt в локальный репозитарий: Необходимо повторить следующее для каждого используемого бранча: git-fetch [url] [remote branch]:[local branch] В нашем случае: git-fetch git.alt:packages/dbmail dbmail_2_2:dbmail_2_2 git-fetch git.alt:packages/dbmail srpms:srpms Бранч dbmail_2_2 можно загружать и из http://nfg3.nfgs.net/git/dbmail.git, но это будет медленнее. В тех случаях, когда необходимо обновить dbmail из upstream scm, особого выбора нет ;) Каждый участвующий в разработке должен после окончания работы выгрузить изменения в свой репозитарий на git-alt, все прочие перед началом работы должны загрузить свежие изменения в свой локальный репозитарий из чужого репозитария на git.alt. -- С уважением, Прокопьев Евгений
next reply other threads:[~2007-04-09 18:06 UTC|newest] Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-04-09 18:06 Eugene Prokopiev [this message] 2007-04-09 19:52 ` Alexey Tourbin 2007-04-09 20:01 ` Dmitry V. Levin 2007-04-09 20:37 ` Alexey Tourbin 2007-04-10 5:42 ` Eugene Prokopiev 2007-04-10 7:35 ` Eugene Prokopiev 2007-04-10 6:41 ` Alexey I. Froloff 2007-04-10 11:56 ` Aleksey Avdeev 2007-04-10 12:26 ` Eugene Prokopiev 2007-04-10 13:38 ` Aleksey Avdeev 2007-04-10 18:33 ` Eugene Prokopiev 2007-04-11 7:46 ` Aleksey Avdeev 2007-04-11 9:21 ` Eugene Prokopiev 2007-04-11 9:45 ` Aleksey Avdeev 2007-04-09 23:33 ` [devel] Subversion tags (was: Еще одно HOWTO про сборку пакета в git.alt и интеграцию с upstream scm) Grigory Batalov 2007-04-09 23:39 ` Alexey Tourbin 2007-04-10 6:44 ` [devel] Еще одно HOWTO про сборку пакета в git.alt и интеграцию с upstream scm Eugene Prokopiev 2007-04-10 6:47 ` Eugene Prokopiev 2007-04-10 7:01 ` Vladimir V. Kamarzin 2007-04-10 7:10 ` Eugene Prokopiev 2007-04-10 8:02 ` Vladimir V. Kamarzin 2007-04-10 9:03 ` Eugene Prokopiev 2007-04-11 6:48 ` Eugene Prokopiev 2007-04-11 10:59 ` Eugene Prokopiev 2007-04-12 10:23 ` Vladimir V. Kamarzin 2007-04-12 19:02 ` Eugene Prokopiev 2007-04-12 19:30 ` Eugene Prokopiev 2007-04-10 9:16 ` Alexey Tourbin 2007-04-10 9:35 ` Eugene Prokopiev 2007-04-10 9:46 ` Alexey Tourbin 2007-04-10 10:03 ` Eugene Prokopiev 2007-04-10 10:48 ` Eugene Prokopiev
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=461A80BC.30606@stc.donpac.ru \ --to=prokopiev@stc.donpac.ru \ --cc=devel@lists.altlinux.org \ /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