ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: "Damir Shayhutdinov" <damir@altlinux.org>
To: "ALT Linux Team development discussions" <devel@lists.altlinux.org>
Subject: Re: [devel] I: gear new utility
Date: Tue, 6 Nov 2007 16:06:46 +0300
Message-ID: <679044850711060506v263a0058lfe15486bff35b7e7@mail.gmail.com> (raw)
In-Reply-To: <47305E5A.1040209@altlinux.ru>

> Эта утилита может помочь, если вы предполагаете хранить оригинальные
> исходники, патчи на них и метафайлы, требующиеся для сборки, в
> отдельных бранчах.
>
> Основная задача утилиты -- это слияние (merge) нескольких бранчей в
> один результирующий master-бранч, из которого можно собирать пакет.

Я написал для себя нечто подобное, с помощью которого веду репозиторий KoLmafia.

У меня тоже есть файл, в котором перечисляется что куда мержить.

Только у меня merge идет по тегам.

Сначала идет тег на апстрим (upstream-tip), потом этот тег мержится в
первую ветку (branch1), накладывается (перемещается) новый тег
(branch1-tip).
Полученный тег branch1-tip мержится в branch2, ставится (перемещается)
тег branch2-tip. И т.д. Последний тег branchN-tip мержится в master.

Такая схема (с перемещающимися тегами) позволяет не менять содержимое
.gear-rules. После запуска этой утилиты достаточно выполнить
gear-update-tag -ac, подправить версию в спеке, закоммитить и собрать
пакет.

Утилита запускается с параметром, означающим "причину обновления". В
моем случае это либо обновление до версии апстрима - KoLmafia-X.Y,
либо до версии из svn - svnXXXX. Из этой причины составляется
аннотация тегов. У тега на ветку upstream (upstream-tip) в аннотация
указывается эта причина. А у тега на ветки branchN (branchN-tip) в
аннотации указывается "Updated to <причина>".

В целом ИМХО получается достаточно прилично. Автоматическая подгонка
патчей производится за пару секунд.

Вот текст этого маленького скрипта, если кому интересно:


$ cat /home/damir/bin/update-branches
8<---------------------------------------
#!/bin/bash

# This script updates and merges all patch-branches in some order


UPDATE_BRANCHES=$(<.git/update-branches)

REASON="$1"

if [ -z "$REASON" ];
then
        echo "Usage: update-branches <reason>"
        exit 1
fi

PREV=
for branch in $UPDATE_BRANCHES
do
        if [ -z "$PREV" ]; then
                git-tag -f -m "$REASON" -s "$branch-tip" "refs/heads/$branch"
        else
                git-checkout -f "$branch"
                git-merge "$PREV-tip" || exit 1
                git-tag -f -m "Updated to $REASON" -s "$branch-tip"
"refs/heads/$branch"
        fi
        PREV="$branch"
done

git-checkout -f master
git-merge "$PREV-tip"
8<------------------------------------------

При этом содержимое .git/update-branches вот такое:

cat /home/damir/ALTLinux/KoLmafia/.git/update-branches
upstream
equipment-fixes
pvp-fixes
price-limit
monsters-info

Результат работы можно посмотреть на
http://git.altlinux.org/people/damir/packages/KoLmafia.git

  reply	other threads:[~2007-11-06 13:06 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-06 12:30 Alexey Gladkov
2007-11-06 13:06 ` Damir Shayhutdinov [this message]
2007-11-06 13:19   ` Alexey Gladkov
2007-11-06 13:29 ` Alexey I. Froloff
2007-11-06 13:42   ` Alexey Gladkov
2007-11-06 13:45   ` Alexey Gladkov
2007-11-06 14:08     ` Alexey I. Froloff
2007-11-06 14:15       ` Alexey Gladkov
2007-11-06 14:40         ` Alexey I. Froloff
2007-11-06 20:17           ` Alexey I. Froloff
2007-11-11 23:21             ` Alexey Gladkov

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=679044850711060506v263a0058lfe15486bff35b7e7@mail.gmail.com \
    --to=damir@altlinux.org \
    --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