[devel] Бранч для svn-репозитария в git

Alexey I. Froloff =?iso-8859-1?q?raorn_=CE=C1_altlinux=2Eru?=
Пн Сен 1 20:26:34 MSD 2008


* 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.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: Digital signature
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20080901/d380db87/attachment-0002.bin>


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