From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <461A80BC.30606@stc.donpac.ru> Date: Mon, 09 Apr 2007 22:06:52 +0400 From: Eugene Prokopiev User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.7.2) Gecko/20040808 X-Accept-Language: ru-ru, ru MIME-Version: 1.0 To: ALT Devel discussion list Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit Subject: [devel] =?koi8-r?b?5d3FIM/Ezs8gSE9XVE8g0NLPINPCz9LL1SDQwcvF1MEg?= =?koi8-r?b?1yBnaXQuYWx0IMkgyc7UxcfSwcPJwCDTIHVwc3RyZWFtIHNjbQ==?= X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.9rc1 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Apr 2007 18:09:21 -0000 Archived-At: List-Archive: List-Post: Здравствуйте! Нечто подобное уже описывалось здесь: 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. -- С уважением, Прокопьев Евгений