ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Бранч для svn-репозитария в git
@ 2008-08-30 16:35 Eugene Prokopiev
  2008-08-30 16:43 ` Eugene Prokopiev
  0 siblings, 1 reply; 13+ messages in thread
From: Eugene Prokopiev @ 2008-08-30 16:35 UTC (permalink / raw)
  To: Devel

Здравствуйте!

Посмотрите, пожалуйста, на
http://git.altlinux.org/people/enp/packages/connexion.git

Отчего в heads через web не видно бранча git-svn и отчего после
git-clone видно только лишь:

$ git-branch -a
  origin/srpm

У меня перед git-push было:

$ git-branch -a
* srpm
  git-svn
  git-svn@1023

$ cat .git/remotes/origin
URL: git.alt:packages/connexion.git
Push: refs/heads/*:refs/heads/*
Push: refs/remotes/*:refs/remotes/*
Push: refs/tags/*:refs/tags/*

В другом репозитарии
(http://git.altlinux.org/people/enp/packages/callweaver.git) все
бранчи через web видны. Я что-то забыл сделать?

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

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

* Re: [devel] Бранч для svn-репозитария в git
  2008-08-30 16:35 [devel] Бранч для svn-репозитария в git Eugene Prokopiev
@ 2008-08-30 16:43 ` Eugene Prokopiev
  2008-08-30 21:50   ` Vitaly Ostanin
  2008-08-31 14:11   ` Alexey I. Froloff
  0 siblings, 2 replies; 13+ messages in thread
From: Eugene Prokopiev @ 2008-08-30 16:43 UTC (permalink / raw)
  To: Devel

>  В другом репозитарии
>  (http://git.altlinux.org/people/enp/packages/callweaver.git) все
>  бранчи через web видны. Я что-то забыл сделать?

Нет, вру, там то же самое. Расскажу тогда, как делал:

$ mkdir connexion
$ cd connexion
$ git-init
$ git-svn init svn://radlinux.org/radlinux/branches/0.4.6
$ git-svn fetch
$ git-checkout git-svn
$ git-branch -d master
$ git-fetch ../srpm/ srpm:srpm
$ git-merge -s ours git-svn
$ vim .gear/rules
$ vim connexion.spec
$ gear-update-tag -ac
$ gear-commit -s
$ gear -v --hasher -- hsh --target=i586
$ mkdir .git/remotes
$ vim .git/remotes/origin
$ git-push

Просьба прокомментировать и рассказать, как это делается правильно

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

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

* Re: [devel] Бранч для svn-репозитария в git
  2008-08-30 16:43 ` Eugene Prokopiev
@ 2008-08-30 21:50   ` Vitaly Ostanin
  2008-08-31  7:31     ` Eugene Prokopiev
  2008-08-31 14:11   ` Alexey I. Froloff
  1 sibling, 1 reply; 13+ messages in thread
From: Vitaly Ostanin @ 2008-08-30 21:50 UTC (permalink / raw)
  To: ALT Linux Team development discussions

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

Eugene Prokopiev пишет:
>>  В другом репозитарии
>>  (http://git.altlinux.org/people/enp/packages/callweaver.git) все
>>  бранчи через web видны. Я что-то забыл сделать?
> 
> Нет, вру, там то же самое. Расскажу тогда, как делал:
> 
> $ mkdir connexion
> $ cd connexion
> $ git-init
> $ git-svn init svn://radlinux.org/radlinux/branches/0.4.6
> $ git-svn fetch

Судя по ману, проще git-svn clone.

> $ git-checkout git-svn
> $ git-branch -d master

Чем помешал master ?

> $ git-fetch ../srpm/ srpm:srpm

../srpm - это точно репозиторий?

> $ git-merge -s ours git-svn
> $ vim .gear/rules
> $ vim connexion.spec
> $ gear-update-tag -ac
> $ gear-commit -s
> $ gear -v --hasher -- hsh --target=i586
> $ mkdir .git/remotes
> $ vim .git/remotes/origin

Можно ещё так:

$ git-remote add origin \
git.alt:/people/enp/packages/connexion.git
$ git-remote update

> $ git-push
> 
> Просьба прокомментировать и рассказать, как это делается правильно

Желательно уточнить, что именно "это", то есть в каких бранчах и
что Вы хотите получить.

Чтобы на git.alt были видны бранчи, нужно 'git-push --all' или
явное указание бранча для push. Для тегов нужно добавлять --tags.

-- 
Regards, Vyt
mailto:  vyt@altlinux.org
JID:     vitaly.ostanin@gmail.com


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 252 bytes --]

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

* Re: [devel] Бранч для svn-репозитария в git
  2008-08-30 21:50   ` Vitaly Ostanin
@ 2008-08-31  7:31     ` Eugene Prokopiev
  2008-08-31 13:00       ` Vitaly Ostanin
  0 siblings, 1 reply; 13+ messages in thread
From: Eugene Prokopiev @ 2008-08-31  7:31 UTC (permalink / raw)
  To: ALT Linux Team development discussions

31.08.08, Vitaly Ostanin написал(а):
> Eugene Prokopiev пишет:
>
> >>  В другом репозитарии
>  >>  (http://git.altlinux.org/people/enp/packages/callweaver.git) все
>  >>  бранчи через web видны. Я что-то забыл сделать?
>  >
>  > Нет, вру, там то же самое. Расскажу тогда, как делал:
>  >
>  > $ mkdir connexion
>  > $ cd connexion
>  > $ git-init
>  > $ git-svn init svn://radlinux.org/radlinux/branches/0.4.6
>  > $ git-svn fetch
>
>
> Судя по ману, проще git-svn clone.

Уже не помню, чем мне так оказалось проще, экспериментировал с git-svn давно

>  > $ git-checkout git-svn
>  > $ git-branch -d master
>
>
> Чем помешал master ?

Бессмысленностью своего существования :) Я иногда читаю здесь что-то в
духе "стоит свою основную ветку в своём git держать именно в master",
но я не знаю, какая ветка у меня основная. Обычно я делаю ветку для
апстримных исходников (ну или сколько их там получится при импорте),
по ветке на патчи в случае необходимости, бывает завожу ветку на
дефолтные конфиги, если они не совсем тривиальны, и по ветке на спеки
для sisyphus и и для branch/4.0 (так уж сложилось, что 4.1 мне
неинтересен). Время от времени ветка master самозарождается снова, ну
я ее снова удаляю, если не забуду ;)

Для экспериментов с connexion пока достаточно:

$ git-branch -a
* srpm
  git-svn
  git-svn@1023

>  > $ git-fetch ../srpm/ srpm:srpm
>
>
> ../srpm - это точно репозиторий?

Ага, специальный репозитарий с первоначальными .gear/rules и спеком

>  > $ git-merge -s ours git-svn
>  > $ vim .gear/rules
>  > $ vim connexion.spec
>  > $ gear-update-tag -ac
>  > $ gear-commit -s
>  > $ gear -v --hasher -- hsh --target=i586
>  > $ mkdir .git/remotes
>  > $ vim .git/remotes/origin
>
>
> Можно ещё так:
>
>  $ git-remote add origin \
>  git.alt:/people/enp/packages/connexion.git
>  $ git-remote update

спасибо

>  > $ git-push
>  >
>  > Просьба прокомментировать и рассказать, как это делается правильно
>
>
> Желательно уточнить, что именно "это", то есть в каких бранчах и
> что Вы хотите получить.

Хочу, чтобы тот, клонирует мой репозитарий, мог выпустить следующую
версию примерно таким образом (можно и другим, конечно, - но другие
мне неизвестны):

$ git-svn fetch - утягиваем апстримные изменения в бранч git-svn
$ git-merge -s ours git-svn - мержим его с текущим бранчем srpm, в
котором лежит спек
$ gear-update-tag -ac - объясняем gear, что тарболл нужно делать из
последнего коммита
$ vim connexion.spec - меняем в релизе svnNNNN
$ add_changelog connexion.spec - добавляем запись в changelog
$ mcedit connexion.spec - правим ее
$ gear-commit -a - коммитим
$ gear -v --hasher -- hsh --target=i586 - собираем

Т.к. утянувший видит следующее:

$ git-branch -a
  origin/srpm

сделать git-svn fetch он, по всей видимости, не сможет. Как сделать, чтоб смог?

>  Чтобы на git.alt были видны бранчи, нужно 'git-push --all' или
>  явное указание бранча для push. Для тегов нужно добавлять --tags.

Сделал git-push --all, эффект тот же.

С тегами ситуация следующая: я не знаю, чем бы они могли бы быть мне
полезны - тарболлы я делаю всегда по последнему коммиту, а в коммитах
моих бранчей запутаться нелегко. Поэтому я теги не ставлю.

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

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

* Re: [devel] Бранч для svn-репозитария в git
  2008-08-31  7:31     ` Eugene Prokopiev
@ 2008-08-31 13:00       ` Vitaly Ostanin
  2008-08-31 13:35         ` Eugene Prokopiev
  0 siblings, 1 reply; 13+ messages in thread
From: Vitaly Ostanin @ 2008-08-31 13:00 UTC (permalink / raw)
  To: ALT Linux Team development discussions

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

Eugene Prokopiev пишет:

<skipped/>

>>  > $ git-checkout git-svn

Здесь, похоже, пропущен ключ '-b', если Вы хотите сделать новый
бранч. После всех манипуляций стоит запускать gitk и смотреть,
что получилось.

Давайте продолжим в jabber, чтобы не засорять рассылку.

<skipped/>

-- 
Regards, Vyt
mailto:  vyt@altlinux.org
JID:     vitaly.ostanin@gmail.com


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 252 bytes --]

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

* Re: [devel] Бранч для svn-репозитария в git
  2008-08-31 13:00       ` Vitaly Ostanin
@ 2008-08-31 13:35         ` Eugene Prokopiev
  0 siblings, 0 replies; 13+ messages in thread
From: Eugene Prokopiev @ 2008-08-31 13:35 UTC (permalink / raw)
  To: ALT Linux Team development discussions

31.08.08, Vitaly Ostanin написал(а):
> Eugene Prokopiev пишет:
>
>  <skipped/>
>
>  >>  > $ git-checkout git-svn
>
>  Здесь, похоже, пропущен ключ '-b', если Вы хотите сделать новый
>  бранч.

Я не уверен, что я этого хочу. Я правильно понимаю, что в этом случае
кроме ремотного бранча git-svn (его сделал git-fetch) я получу еще и
аналогичный локальный? Какое имя он получит? Проверил - получилось 2
бранча git-svn. Как теперь мне переключаться в нужный? А я должен буду
синхронизировать локальный его с ремотным - и это все для того, чтоб я
мог запушить явно выделенный бранч с апстримными исходниками?

Интересно, что коммиты ремотного бранча git-svn уходят на git.alt и
клонируются оттуда и так, поэтому из клонированного репозитария вполне
можно собирать пакет. Более того, на клонированном репозитарии можно
точно так же сказать git-svn init и git-svn fetch - и после этого
мержить и собирать так, как я описал - т.е. проблема вроде как
решается. Но меня не покидает ощущение кривизны такого подхода.

>  После всех манипуляций стоит запускать gitk и смотреть,
>  что получилось.

Ну это непременно. Кстати, после git-svn init и git-svn fetch
клонированный репозитарий своим внешним видом в gitk --all ничем не
отличается от моего первоначального. Разве что он, похоже, некорректно
работает с ремотными бранчами - я делаю:

$ git-checkout origin/srpm
$ git-merge -s ours git-svn
$ gear-update-tag -ac
$ vim connexion.spec
$ gear-commit -a

а в gitk --all ничего подобного не вижу (в git-log вижу). Да, где-то я
читал, что править нужно только локальные, а не ремотные бранчи, т.к.
потом будут сложности с взаимодействием с первоначальным репозитарием
- поэтому претензии к gitk снимаю.

>  Давайте продолжим в jabber, чтобы не засорять рассылку.

Если никто из присутствующих не возражает, давайте останемся здесь -
это ведь общие вопросы использования git/gear, может еще кому будет
интересно. Вот как доберемся до специфики connection - тогда можно и
перебраться :)

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

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

* Re: [devel] Бранч для svn-репозитария в git
  2008-08-30 16:43 ` Eugene Prokopiev
  2008-08-30 21:50   ` Vitaly Ostanin
@ 2008-08-31 14:11   ` Alexey I. Froloff
  2008-08-31 14:18     ` Eugene Prokopiev
  1 sibling, 1 reply; 13+ messages in thread
From: Alexey I. Froloff @ 2008-08-31 14:11 UTC (permalink / raw)
  To: ALT Devel discussion list

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

* Eugene Prokopiev <enp@> [080830 20:57]:
> $ mkdir connexion
...
> $ git-push
> Просьба прокомментировать и рассказать, как это делается правильно
Что именно хочется сделать?  Сохранить историю src.rpm'ов и
перейти на сборку из svn?

-- 
Regards,
Sir Raorn.

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

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

* Re: [devel] Бранч для svn-репозитария в git
  2008-08-31 14:11   ` Alexey I. Froloff
@ 2008-08-31 14:18     ` Eugene Prokopiev
  2008-08-31 16:07       ` Alexey I. Froloff
  0 siblings, 1 reply; 13+ messages in thread
From: Eugene Prokopiev @ 2008-08-31 14:18 UTC (permalink / raw)
  To: ALT Linux Team development discussions

31.08.08, Alexey I. Froloff<raorn@> написал(а):
> * Eugene Prokopiev <enp@> [080830 20:57]:
>  > $ mkdir connexion
>  ...
>
> > $ git-push
>  > Просьба прокомментировать и рассказать, как это делается правильно
>
> Что именно хочется сделать?  Сохранить историю src.rpm'ов и
>  перейти на сборку из svn?

достаточно просто перейти на сборку из svn + иметь возможность
собирать нескольким майнтейнерам

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

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

* Re: [devel] Бранч для svn-репозитария в git
  2008-08-31 14:18     ` Eugene Prokopiev
@ 2008-08-31 16:07       ` Alexey I. Froloff
  2008-08-31 19:36         ` Eugene Prokopiev
  0 siblings, 1 reply; 13+ messages in thread
From: Alexey I. Froloff @ 2008-08-31 16:07 UTC (permalink / raw)
  To: ALT Devel discussion list

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

* Eugene Prokopiev <enp@> [080831 18:29]:
> достаточно просто перейти на сборку из svn + иметь возможность
> собирать нескольким майнтейнерам
Тогда так:

$ ssh -n git.alt git-clone git.alt:/archive/p/package-name.git
$ git clone git.alt:packages/package-name.git
$ git branch -d srpms
$ git push origin :srpms
$ git svn init -s svn://radlinux.org/radlinux/
$ git svn fetch

Теперь весь репозитарий втянут в remotes/trunk, remotes/tags/* и
remotes/branches/*, это делает опция -s для svn init.

$ git mv имякаталога/* .
$ git mv имякаталога/.* . # (if any)
$ git commit -m 'git mv имякаталога/* .'
$ git pull . tags/ВЕРСИЯ_ПАКЕТА

Тут мы "пристёгиваем" нужную версию из svn к истории пакета.  Как
правило мёрж происходит чисто, но могут быть проблемы если тарбол
не соответствует чекауту из svn.  -s ours делать не рекомендую,
лучше таки проконтролировать процесс.

Далее в .gear/rules будет примерно так:

tar: remotes/tags/@version@:.
diff: remotes/tags/@version@:. .

Потом прикладываем все патчи (в master, или в разные бранчи - как
удобно) и двигаемся к новому снапшоту:

$ git pull . tags/НОВАЯ_ВЕРСИЯ или trunk или branches/БРАНЧ

-- 
Regards,
Sir Raorn.

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

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

* Re: [devel] Бранч для svn-репозитария в git
  2008-08-31 16:07       ` Alexey I. Froloff
@ 2008-08-31 19:36         ` Eugene Prokopiev
  2008-08-31 20:08           ` Alexey I. Froloff
  0 siblings, 1 reply; 13+ messages in thread
From: Eugene Prokopiev @ 2008-08-31 19:36 UTC (permalink / raw)
  To: ALT Linux Team development discussions

31.08.08, Alexey I. Froloff<raorn@altlinux.ru> написал(а):
> * Eugene Prokopiev <enp@> [080831 18:29]:
>
> > достаточно просто перейти на сборку из svn + иметь возможность
>  > собирать нескольким майнтейнерам
>
> Тогда так:
>
>  $ ssh -n git.alt git-clone git.alt:/archive/p/package-name.git
>  $ git clone git.alt:packages/package-name.git
>  $ git branch -d srpms
>  $ git push origin :srpms

Удалить бранч srpms в локальном репозитарии и в своем на git.alt?

Так его нет:

$ git-branch -a
* master
  origin/HEAD
  origin/master
  origin/srpms

А вообще, предыдущие src.rpm (их именно что была куча, и во всех -
свои куски svn) не годятся совсем, нужно делать с нуля. Поэтому я
дальше поскипаю до того момента, который мне непонятен:

>  $ git pull . tags/ВЕРСИЯ_ПАКЕТА
...
>  Далее в .gear/rules будет примерно так:
>
>  tar: remotes/tags/@version@:.
>  diff: remotes/tags/@version@:. .
...
>  $ git pull . tags/НОВАЯ_ВЕРСИЯ или trunk или branches/БРАНЧ

Зачем делать pull в текущий бранч (предполагается, что спек там же?),
если tar нам сделают из ремотного бранча по тегу, а не из каталога в
текущем бранче?

И в чем принципиальная разница с моим рецептом? У меня тоже tar
делался из ремотного бранча, но после push на git.alt и clone оттуда
этот ремотный бранч уже не был виден - т.о. разработчик, сделавший
clone, не мог просто сделать git-svn fetch для обновления апстримных
исходников, а должен был сделать перед тем git-svn init. В вашем
случае это тоже так?

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

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

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

* Re: [devel] Бранч для svn-репозитария в git
  2008-08-31 19:36         ` Eugene Prokopiev
@ 2008-08-31 20:08           ` Alexey I. Froloff
  2008-09-01  8:34             ` Eugene Prokopiev
  0 siblings, 1 reply; 13+ messages in thread
From: Alexey I. Froloff @ 2008-08-31 20:08 UTC (permalink / raw)
  To: ALT Devel discussion list

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

* Eugene Prokopiev <enp@> [080831 23:48]:
> Зачем делать pull в текущий бранч (предполагается, что спек там же?),
> если tar нам сделают из ремотного бранча по тегу, а не из каталога в
> текущем бранче?
Там же ещё и diff есть.  Не обязательно в текущий, можно и через
несколько бранчей, например с помощью gear-merge.  Смысл в том,
что апстримные сорцы в одном месте, все локальные изменения в
другом (мне удобно когда это в master, некоторые держат в master
только спек, а патчи в "предыдущем" бранче).

Пример "многоветочного" репозитария у меня в mutt1.5.git.

> И в чем принципиальная разница с моим рецептом?
Я его не очень понял и рассказал свой рецепт ;-)

> У меня тоже tar делался из ремотного бранча, но после push на
> git.alt и clone оттуда этот ремотный бранч уже не был виден -
> т.о. разработчик, сделавший clone, не мог просто сделать
> git-svn fetch для обновления апстримных исходников, а должен
> был сделать перед тем git-svn init. В вашем случае это тоже
> так?
Почти.  В моём примере их надо тоже пушить явно:

git push origin refs/remotes/trunk:refs/remotes/trunk
git push origin 'refs/remotes/tags/*:refs/remotes/tags/*'
git push origin 'refs/remotes/branches/*:refs/remotes/branches/*'

Правая сторона может быть и не refs/remotes/*, а refs/svn/*.  Но
чтобы работал git svn, локально эти ветки должны быть в
refs/remotes/.  Хотя по слухам это можно и настроить через
.git/config, но я это пока не очень асилил.

Чтобы второй разработчик мог делать git svn fetch надо либо
скопировать кусок .git/config относящийся к svn у первого
разработчика или сделать git svn init и расставить нужные бранчи
в том виде как их ожидает найти git svn.

> Меня именно модель взаимодействия больше всего интересует - я выпускаю
> одну версию, другой разработчик - следующую, потом выпускаю еще раз я.
$ git remote add РАЗРАБОТЧИК git.alt:/people/РАЗРАБОТЧИК/packages/ПАКЕТ.git
$ git fetch РАЗРАБОТЧИК

Я ещё делаю

$ git fetch РАЗРАБОТЧИК 'refs/heads/*:refs/heads/*'

Если накоммитили в одно время, fast-forward не будет и некоторые
ветки придётся мержить явно.

Ну и синхронизировать периодически между собой.

Два разработчика + SVN есть в ruby.git у меня и kas.

-- 
Regards,
Sir Raorn.

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

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

* Re: [devel] Бранч для svn-репозитария в git
  2008-08-31 20:08           ` Alexey I. Froloff
@ 2008-09-01  8:34             ` Eugene Prokopiev
  2008-09-01 16:26               ` Alexey I. Froloff
  0 siblings, 1 reply; 13+ messages in thread
From: Eugene Prokopiev @ 2008-09-01  8:34 UTC (permalink / raw)
  To: ALT Linux Team development discussions

01.09.08, Alexey I. Froloff<raorn@> написал(а):
> * Eugene Prokopiev <enp@> [080831 23:48]:
>
>  > У меня тоже tar делался из ремотного бранча, но после push на
>  > git.alt и clone оттуда этот ремотный бранч уже не был виден -
>  > т.о. разработчик, сделавший clone, не мог просто сделать
>  > git-svn fetch для обновления апстримных исходников, а должен
>  > был сделать перед тем git-svn init. В вашем случае это тоже
>  > так?
>
> Почти.  В моём примере их надо тоже пушить явно:
>
>  git push origin refs/remotes/trunk:refs/remotes/trunk
>  git push origin 'refs/remotes/tags/*:refs/remotes/tags/*'
>  git push origin 'refs/remotes/branches/*:refs/remotes/branches/*'

сделал, но на git.alt и в клонированном репозитарии ремотных бранчей не видно

>  Правая сторона может быть и не refs/remotes/*, а refs/svn/*.

$ ls .git/refs/svn*
ls: .git/refs/svn*: No such file or directory

>  Но чтобы работал git svn, локально эти ветки должны быть в
>  refs/remotes/.  Хотя по слухам это можно и настроить через
>  .git/config, но я это пока не очень асилил.

спасибо, погляжу

>  Чтобы второй разработчик мог делать git svn fetch надо либо
>  скопировать кусок .git/config относящийся к svn у первого
>  разработчика или сделать git svn init и расставить нужные бранчи
>  в том виде как их ожидает найти git svn.

зачем тогда делать git push origin ... ?

по моим наблюдениям как раз git svn init или редактирования
.git/config достаточно - получается это вполне кошерный способ?

>  > Меня именно модель взаимодействия больше всего интересует - я выпускаю
>  > одну версию, другой разработчик - следующую, потом выпускаю еще раз я.
>
> $ git remote add РАЗРАБОТЧИК git.alt:/people/РАЗРАБОТЧИК/packages/ПАКЕТ.git
>  $ git fetch РАЗРАБОТЧИК

это я делаю после того, как второй разработчик клонировал репозитарий,
создал свой бранч на основе моего srpms, чего-то там сделал, а я хочу
это увидеть и, возможно, смержить?

>  Я ещё делаю
>
>  $ git fetch РАЗРАБОТЧИК 'refs/heads/*:refs/heads/*'

можно популярно объяснить, зачем это надо?

>  Если накоммитили в одно время, fast-forward не будет и некоторые
>  ветки придётся мержить явно.

а бывает и неявно? можно об этом подробнее?

>  Ну и синхронизировать периодически между собой.

я не очень понял, а упомянутые неявные мержи не относятся к процессу
взаимодействия между разработчиками?

>  Два разработчика + SVN есть в ruby.git у меня и kas.

это хорошо, когда есть пример :)

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

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

* Re: [devel] Бранч для svn-репозитария в git
  2008-09-01  8:34             ` Eugene Prokopiev
@ 2008-09-01 16:26               ` Alexey I. Froloff
  0 siblings, 0 replies; 13+ messages in thread
From: Alexey I. Froloff @ 2008-09-01 16:26 UTC (permalink / raw)
  To: ALT Devel discussion list

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

* Eugene Prokopiev <enp@> [080901 12:35]:
> >  git push origin refs/remotes/trunk:refs/remotes/trunk
> >  git push origin 'refs/remotes/tags/*:refs/remotes/tags/*'
> >  git push origin 'refs/remotes/branches/*:refs/remotes/branches/*'
> сделал, но на git.alt и в клонированном репозитарии ремотных бранчей не видно
А git.alt на это как-то ругнулся?  Я честно говоря не пробовал
так делать, но обработку remotes в girar краем глаза видел ;-)

> >  Правая сторона может быть и не refs/remotes/*, а refs/svn/*.
> $ ls .git/refs/svn*
> ls: .git/refs/svn*: No such file or directory
Правая сторона:

$ git push origin refs/remotes/trunk:refs/svn/trunk
$ git push origin 'refs/remotes/tags/*:refs/svn/tags/*'
$ git push origin 'refs/remotes/branches/*:refs/svn/branches/*'

> >  Чтобы второй разработчик мог делать git svn fetch надо либо
> >  скопировать кусок .git/config относящийся к svn у первого
> >  разработчика или сделать git svn init и расставить нужные бранчи
> >  в том виде как их ожидает найти git svn.
> зачем тогда делать git push origin ... ?
Чтобы туда попали head'ы нужных веток и коммиты.

> по моим наблюдениям как раз git svn init или редактирования
> .git/config достаточно - получается это вполне кошерный способ?
Я это делал один раз, при чём у меня валялся какой-то тухлый
.git/svn/ от предыдужих экспериментов.  Очень вероятно, что
что-то в моих действиях git сделает автоматом.  В какой-то момент
он начал вывасывать все ревизии начиная с первой, новые об'екты
при этом не создавались, просто remotes/trunk перемещался по
дереву.  Не помню, было ли это до удаления старого .git/svn/ или
между удалением и созданием нужных бранчей.

> > $ git remote add РАЗРАБОТЧИК git.alt:/people/РАЗРАБОТЧИК/packages/ПАКЕТ.git
> >  $ git fetch РАЗРАБОТЧИК
> это я делаю после того, как второй разработчик клонировал репозитарий,
> создал свой бранч на основе моего srpms, чего-то там сделал, а я хочу
> это увидеть и, возможно, смержить?
Да.  Создадутся ветки remotes/РАЗРАБОТЧИК/*.

> >  $ git fetch РАЗРАБОТЧИК 'refs/heads/*:refs/heads/*'
> можно популярно объяснить, зачем это надо?
Чтобы не делать один-два-десять раз

$ git checkout branch
$ git pull . РАЗРАБОТЧИК/branch (или git pull РАЗРАБОТЧИК branch)

Но работает это только для fast-forward.

> >  Если накоммитили в одно время, fast-forward не будет и некоторые
> >  ветки придётся мержить явно.
> а бывает и неявно? можно об этом подробнее?
Чуть выше написано.  В ruby есть svn, ветка up, куда мержится
svn/branches/ruby1_8_7, ветки с патчами и всё смержено в итоге в
master.  Кирилл зарелизил 1.8.7-alt6, потом я сделал один коммит
в master (исправления для ppc).  Дальше Кирилл втягивает этот мой
коммит в master и продолжает разработку.

Если он сразу проверит, не коммитил ли я чего, история будет
линейной, его коммит, мой, потом опять его.  Если забудет, то
fetch 'refs/heads/*:refs/heads/*' ругнётся что fast-forward
невозможен и придётся делать pull raorn master.

Нас пока двое, пакет не очень динамично развивается, поэтому
topic-веток мы не плодим, сильно экспериментами не занимаемся.
Получается как будто в разное время коммитим в один и тот же
репозитарий.

> >  Ну и синхронизировать периодически между собой.
> я не очень понял, а упомянутые неявные мержи не относятся к процессу
> взаимодействия между разработчиками?
"Неявные мержи" это fast-forward.  Есть простой способ (начиная с
git 1.5.0, IIRC) попытаться сделать его для нескольких веток
сразу.

-- 
Regards,
Sir Raorn.

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

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

end of thread, other threads:[~2008-09-01 16:26 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-08-30 16:35 [devel] Бранч для svn-репозитария в git Eugene Prokopiev
2008-08-30 16:43 ` Eugene Prokopiev
2008-08-30 21:50   ` Vitaly Ostanin
2008-08-31  7:31     ` Eugene Prokopiev
2008-08-31 13:00       ` Vitaly Ostanin
2008-08-31 13:35         ` Eugene Prokopiev
2008-08-31 14:11   ` Alexey I. Froloff
2008-08-31 14:18     ` Eugene Prokopiev
2008-08-31 16:07       ` Alexey I. Froloff
2008-08-31 19:36         ` Eugene Prokopiev
2008-08-31 20:08           ` Alexey I. Froloff
2008-09-01  8:34             ` Eugene Prokopiev
2008-09-01 16:26               ` Alexey I. Froloff

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