[devel] Простой пакет в git-репозитарии

Eugene Prokopiev =?iso-8859-1?q?enp_=CE=C1_altlinux=2Eorg?=
Пн Апр 7 15:24:37 MSD 2008


>  >  Нет ли более человечного способа создать в репозитарии 2 независимых
>  >  друг от друга бранча?
>
>
> Это и был более человечный. Менее человечный - это написание
>  скрипта-обертки, типа git-commit-without-parent, который бы делал
>  что-то типа git-write-tree, объединенное с git-commit-tree, после чего
>  бы создавался новый бранч через git-branch.
>
>  Примерно так:
>
>  TREE=`git-write-tree`
>  COMMIT=`echo "Creating new branch" | git-commit-tree "$TREE"`
>  git-branch newbranch "$COMMIT"
>
>  Тут правда надо делать корректную обработку ошибок и т.п.

если я правильно понял, то самый человечный предложил Денис :)

>  > Хотя, иметь репозитарий-заготовку с пустыми
>  >  спеком и .gear/rules - не такая уж плохая идея :) Еще лучше упихать
>  >  эту процедуру подальше от любопытных глаз в какой-нибудь gear-init,
>  >  который из тарболла делает репозитарий с рекомендуемой структурой. И
>  >  из src.rpm делает то же, т.е. с бранчами, а не с подкаталогом.
>
> Не для всех вариантов это имеет смысл.

Ну разве что кому-то будет лень обновнять апстримные исходники, а
потом мержить их. Будет простой инструмент - будет не лень, а
преимущества разделения очевидны. Или я не прав?

> Можно вместо тегов использовать имя ветки. Главное чтобы она была
>  смержена туда где .gear-rules.

$ cat .gear/rules
tar: upstream:.
$ git-branch -a
* master
  upstream
$ PAGER=cat git-log
commit 548837f805edb5b33f4a483d438b2cfe149d46c0
Merge: 85de2c0... c026f1b...
Author: Eugene Prokopiev <enp на altlinux.ru>
Date:   Mon Apr 7 13:47:58 2008 +0400
...
$ gear -v --commit --export-dir=/tmp
Created commit dc2b31b: Temporary commit by gear.
 3 files changed, 4 insertions(+), 2 deletions(-)
 create mode 100644 .gear/tags/list
gear: Temporarily committed local changes.
gear: .gear/rules line 1: Name "upstream" not found in tag list
gear: .gear/rules line 1: Failed to make archive
gear: Reverted temporary commit dc2b31b9fd84fc4eaf049c4abbd048cadfcaaa7e.

>  >  Посмотрел туда и еще в парочку, сделал вывод, что общепринятой
>  >  структурой репозитария (если мы выносим апстримные исходники в
>  >  отдельный бранч) является такая:
>  >
>  >  $ git-branch -a
>  >  * (no branch)
>  >   master
>  >   origin/HEAD
>  >   origin/master
>  >   origin/upstream
>  >
>  >  Назначение master и origin/upstream понятно, будет ли последний
>  >  локальным или ремотным (интересно, а как его по-русски назвать?
>  >  "удаленный" - еще хуже) - зависит, как я понял, от того, используем мы
>  >  gear-update или git-svn fetch :)
>  >
>  >  Зачем нужны origin/HEAD и origin/master?
>
> Это удаленные ветки, которые отслеживают удаленный репозитарий на git.alt.

Чуть подробнее можно? Или ссылку.

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


Подробная информация о списке рассылки Devel