ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] I: gear new utility
@ 2007-11-06 12:30 Alexey Gladkov
  2007-11-06 13:06 ` Damir Shayhutdinov
  2007-11-06 13:29 ` Alexey I. Froloff
  0 siblings, 2 replies; 11+ messages in thread
From: Alexey Gladkov @ 2007-11-06 12:30 UTC (permalink / raw)
  To: Dmitry V. Levin, ALT Devel discussion list

Приветствую!

Я закончил дорабатывать новую утилиту (пока только под себя) - gear-merge. 
Думаю она готова к основной ветке. Дим, как будет у тебя время смердж её 
в основную ветку.

Эта утилита может помочь, если вы предполагаете хранить оригинальные 
исходники, патчи на них и метафайлы, требующиеся для сборки, в 
отдельных бранчах.

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

Собственно пример использования:

[legion ash]$ git-branch 
* master
  patch/add-losetup
  patch/cleanup-warnings
  patch/fix-gcc-warnings
  patch/use-cflags
  upstream

[legion ash]$ cat .gear/merge 
merge: upstream               message="Merge upstream sources"
merge: patch/add-losetup      message="Apply patch 'add-losetup'"
merge: patch/cleanup-warnings message="Apply patch 'cleanup-warnings'"
merge: patch/fix-gcc-warnings message="Apply patch 'fix-gcc-warnings'"
merge: patch/use-cflags       message="Apply patch 'use-cflags'"

Результатом будет бранч (master) в котором будут слиты исходники и патчи
из отдельных веток.

Или так, если предпочитаете держать патчи не приложенными:

[legion ash]$ cat .gear/merge 
merge: upstream               message="Merge upstream sources"
gendiff: patch/add-losetup      master name=dash-alt-add-losetup.patch
gendiff: patch/cleanup-warnings master name=dash-alt-cleanup-warnings.patch
gendiff: patch/fix-gcc-warnings master name=dash-alt-fix-gcc-warnings.patch
gendiff: patch/use-cflags       master name=dash-alt-use-cflags.diff

Нечто подобное есть в git.alt:/people/vsu/packages/kernel-build-scripts.git
под названием merge-all-branches. Некоторые идеи были взяты оттуда.

С добавлением этой утилиты появится ещё один способ организовать
репозиторий (по крайней мере для меня).

http://git.altlinux.org/people/legion/packages/gear.git?p=gear.git;a=shortlog;h=legion/gear-merge

P.S. Дим, даю копию в devel@.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] I: gear new utility
  2007-11-06 12:30 [devel] I: gear new utility Alexey Gladkov
@ 2007-11-06 13:06 ` Damir Shayhutdinov
  2007-11-06 13:19   ` Alexey Gladkov
  2007-11-06 13:29 ` Alexey I. Froloff
  1 sibling, 1 reply; 11+ messages in thread
From: Damir Shayhutdinov @ 2007-11-06 13:06 UTC (permalink / raw)
  To: ALT Linux Team development discussions

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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] I: gear new utility
  2007-11-06 13:06 ` Damir Shayhutdinov
@ 2007-11-06 13:19   ` Alexey Gladkov
  0 siblings, 0 replies; 11+ messages in thread
From: Alexey Gladkov @ 2007-11-06 13:19 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Damir Shayhutdinov wrote:
> У меня тоже есть файл, в котором перечисляется что куда мержить.
> 
> Только у меня merge идет по тегам.

Для merge по тэгам у нас есть gear-update-tag, но это не всегда годится.

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

Для новой утилиты должны быть свои правила: .gear/merge.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] I: gear new utility
  2007-11-06 12:30 [devel] I: gear new utility Alexey Gladkov
  2007-11-06 13:06 ` Damir Shayhutdinov
@ 2007-11-06 13:29 ` Alexey I. Froloff
  2007-11-06 13:42   ` Alexey Gladkov
  2007-11-06 13:45   ` Alexey Gladkov
  1 sibling, 2 replies; 11+ messages in thread
From: Alexey I. Froloff @ 2007-11-06 13:29 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 468 bytes --]

* Alexey Gladkov <legion@> [071106 15:30]:
> Основная задача утилиты -- это слияние (merge) нескольких бранчей в 
> один результирующий master-бранч, из которого можно собирать пакет.
А оно у тебя как мержит?  Все по очереди в master, или upstream
-> patch-a -> patch-b -> master ?

-- 
Regards, Alexey I. Froloff
AIF5-RIPN, AIF5-RIPE
-------------------------------------------
  Inform-Mobil, Ltd. System Administrator
       http://www.inform-mobil.ru/

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] I: gear new utility
  2007-11-06 13:29 ` Alexey I. Froloff
@ 2007-11-06 13:42   ` Alexey Gladkov
  2007-11-06 13:45   ` Alexey Gladkov
  1 sibling, 0 replies; 11+ messages in thread
From: Alexey Gladkov @ 2007-11-06 13:42 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Alexey I. Froloff wrote:
> * Alexey Gladkov <legion@> [071106 15:30]:
>> Основная задача утилиты -- это слияние (merge) нескольких бранчей в 
>> один результирующий master-бранч, из которого можно собирать пакет.
> А оно у тебя как мержит?  Все по очереди в master, или upstream
> -> patch-a -> patch-b -> master ?

В порядке указанном в gear/merge т.е. в правилках.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] I: gear new utility
  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
  1 sibling, 1 reply; 11+ messages in thread
From: Alexey Gladkov @ 2007-11-06 13:45 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Alexey I. Froloff wrote:
> * Alexey Gladkov <legion@> [071106 15:30]:
>> Основная задача утилиты -- это слияние (merge) нескольких бранчей в 
>> один результирующий master-бранч, из которого можно собирать пакет.
> А оно у тебя как мержит?  Все по очереди в master, или upstream
> -> patch-a -> patch-b -> master ?

По очереди в master

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] I: gear new utility
  2007-11-06 13:45   ` Alexey Gladkov
@ 2007-11-06 14:08     ` Alexey I. Froloff
  2007-11-06 14:15       ` Alexey Gladkov
  0 siblings, 1 reply; 11+ messages in thread
From: Alexey I. Froloff @ 2007-11-06 14:08 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 547 bytes --]

* Alexey Gladkov <legion@> [071106 16:46]:
> >> Основная задача утилиты -- это слияние (merge) нескольких бранчей в 
> >> один результирующий master-бранч, из которого можно собирать пакет.
> > А оно у тебя как мержит?  Все по очереди в master, или upstream
> > -> patch-a -> patch-b -> master ?
> По очереди в master
Понятно.  К сожалению мимо меня пройдёт.

-- 
Regards, Alexey I. Froloff
AIF5-RIPN, AIF5-RIPE
-------------------------------------------
  Inform-Mobil, Ltd. System Administrator
       http://www.inform-mobil.ru/

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] I: gear new utility
  2007-11-06 14:08     ` Alexey I. Froloff
@ 2007-11-06 14:15       ` Alexey Gladkov
  2007-11-06 14:40         ` Alexey I. Froloff
  0 siblings, 1 reply; 11+ messages in thread
From: Alexey Gladkov @ 2007-11-06 14:15 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Alexey I. Froloff wrote:
> Понятно.  К сожалению мимо меня пройдёт.

А тебе нужно чтобы можно было делать вторую схему ?

Если да, то опиши подробнее пожалуйста. Я на эту тему тоже думал, но
задач таких у меня нет, поэтому не реализовал.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] I: gear new utility
  2007-11-06 14:15       ` Alexey Gladkov
@ 2007-11-06 14:40         ` Alexey I. Froloff
  2007-11-06 20:17           ` Alexey I. Froloff
  0 siblings, 1 reply; 11+ messages in thread
From: Alexey I. Froloff @ 2007-11-06 14:40 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 678 bytes --]

* Alexey Gladkov <legion@> [071106 17:15]:
> > Понятно.  К сожалению мимо меня пройдёт.
> А тебе нужно чтобы можно было делать вторую схему ?
Угу.  Когда "патчи" сильно пересекаются (а в ядре это всё-таки не
так) обновлять это всё становится немного больно.

> Если да, то опиши подробнее пожалуйста. Я на эту тему тоже думал, но
> задач таких у меня нет, поэтому не реализовал.
http://lists.altlinux.ru/pipermail/sisyphus/2007-September/207264.html

Ну и плюс Дамир свой скрипт кидал.

-- 
Regards, Alexey I. Froloff
AIF5-RIPN, AIF5-RIPE
-------------------------------------------
  Inform-Mobil, Ltd. System Administrator
       http://www.inform-mobil.ru/

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] I: gear new utility
  2007-11-06 14:40         ` Alexey I. Froloff
@ 2007-11-06 20:17           ` Alexey I. Froloff
  2007-11-11 23:21             ` Alexey Gladkov
  0 siblings, 1 reply; 11+ messages in thread
From: Alexey I. Froloff @ 2007-11-06 20:17 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 1288 bytes --]

* Alexey I. Froloff <raorn@> [071106 17:47]:
> > Если да, то опиши подробнее пожалуйста. Я на эту тему тоже
> > думал, но задач таких у меня нет, поэтому не реализовал.
> http://lists.altlinux.ru/pipermail/sisyphus/2007-September/207264.html
> Ну и плюс Дамир свой скрипт кидал.
У нас есть ветка upstream, ветки с патчами patch-A, patch-B,
patch-C, patch-D и master, из которого идёт сборка.  Самый
простой случай, выход нового upstream:

$ git checkout upstream
$ gear-update ...
$ git commit
// (1)
$ git checkout patch-A
$ git pull . upstream
$ git checkout patch-B
$ git pull . patch-A
$ git checkout patch-C
$ git pull . patch-B
// (2)
[vim commit vim commit]
// (3)
$ git checkout patch-D
$ git pull . patch-C
$ git checkout master
$ git pull . patch-D
// (4)

Собсно, имеет значение порядок веток, он не меняется, возможно
некоторые ветки будут удаляться или добавляться в процессе
работы.  Если хочется генерить диффы, делать это надо между
upstream и patch-A, patch-A и patch-B и т.д.

От утилиты хочется сказать "смержи мне отсюда (1) и до обеда
(2)", потом "вот отсюда (3) и до master (4)".  Может быть даже с
таким интерфейсом, как это делает git-rebase, чтобы можно было
разрешить конфликт и продолжить мерж.

-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] I: gear new utility
  2007-11-06 20:17           ` Alexey I. Froloff
@ 2007-11-11 23:21             ` Alexey Gladkov
  0 siblings, 0 replies; 11+ messages in thread
From: Alexey Gladkov @ 2007-11-11 23:21 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Alexey I. Froloff wrote:
> У нас есть ветка upstream, ветки с патчами patch-A, patch-B,
> patch-C, patch-D и master, из которого идёт сборка.  Самый
> простой случай, выход нового upstream:
> 
> $ git checkout upstream
> $ gear-update ...
> $ git commit
> // (1)
> $ git checkout patch-A
> $ git pull . upstream
> $ git checkout patch-B
> $ git pull . patch-A
> $ git checkout patch-C
> $ git pull . patch-B
> // (2)
> [vim commit vim commit]
> // (3)
> $ git checkout patch-D
> $ git pull . patch-C
> $ git checkout master
> $ git pull . patch-D
> // (4)

Я изменил синтаксис у правил чтобы можно было реализовать такой
подход. Теперь при указании правила merge нужно указывать кого с кем
нужно merge'ить.

Также я сделал, как ты и просил, интерактивный режим работы этой
утилиты. Теперь она спрашивает, применять правило или нет.

gear-merge уже добавлен в основную ветку.

> От утилиты хочется сказать "смержи мне отсюда (1) и до обеда
> (2)", потом "вот отсюда (3) и до master (4)".  Может быть даже с
> таким интерфейсом, как это делает git-rebase, чтобы можно было
> разрешить конфликт и продолжить мерж.

"Отсюда и до обеда" пока не реализовано, но с учётом интерактивного
режима не применять некоторые правила можно.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2007-11-11 23:21 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-11-06 12:30 [devel] I: gear new utility Alexey Gladkov
2007-11-06 13:06 ` Damir Shayhutdinov
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

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