ALT Linux Team development discussions
 help / color / mirror / Atom feed
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.

-- 
С уважением, Прокопьев Евгений



             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