получил я задачку, начал разработку на своем git репозитории. у проекта ещё никакого репозитория не было — мне сказали мылом присылать снапшоты — потому я и начал с git init
так вот, проект уже развился и у него появился репозиторий — но svn.
1. можно ли как то залить содержимое моего репозитория со всему коммитами и комментариями?
если да — подскажите пожалуйста набор комманд.
если нет — как лучше всего выкрутиться? сделать git clone в фолдер с svn копией и просто все добавить в свн?
спасибо
С уважением Denys Valchuk
IMHO чем больше мнений тем оптимальней выбор варианта... :)
Здравствуйте, Denys V., Вы писали:
DV>привет всем.
DV>получил я задачку, начал разработку на своем git репозитории. у проекта ещё никакого репозитория не было — мне сказали мылом присылать снапшоты — потому я и начал с git init DV>так вот, проект уже развился и у него появился репозиторий — но svn. DV>1. можно ли как то залить содержимое моего репозитория со всему коммитами и комментариями? DV>если да — подскажите пожалуйста набор комманд. DV>если нет — как лучше всего выкрутиться? сделать git clone в фолдер с svn копией и просто все добавить в свн?
Если в git ветка одна и svn репозиторий на сервере ещё пуст — то всё элементарно (а если не пуст — то, вероятно, придётся разруливать конфликты):
/* добавляем svn remote в наш git */
git svn init http://server/svn/trunk
/* получаем стартовый коммит/коммиты из svn */
git svn fetch
/* "переводим" все наши комиты на родителя из svn — т.е. как будто мы все делали от последнего коммита в svn */
g rebase remotes/git-svn
/* отправляем наши коммиты в svn */
git svn dcommit
Здравствуйте, Clerk, Вы писали:
C>Здравствуйте, Denys V., Вы писали:
DV>>привет всем.
DV>>получил я задачку, начал разработку на своем git репозитории. у проекта ещё никакого репозитория не было — мне сказали мылом присылать снапшоты — потому я и начал с git init DV>>так вот, проект уже развился и у него появился репозиторий — но svn. DV>>1. можно ли как то залить содержимое моего репозитория со всему коммитами и комментариями? DV>>если да — подскажите пожалуйста набор комманд. DV>>если нет — как лучше всего выкрутиться? сделать git clone в фолдер с svn копией и просто все добавить в свн?
C>Если в git ветка одна и svn репозиторий на сервере ещё пуст — то всё элементарно (а если не пуст — то, вероятно, придётся разруливать конфликты):
C>/* добавляем svn remote в наш git */ C>git svn init http://server/svn/trunk C>/* получаем стартовый коммит/коммиты из svn */ C>git svn fetch C>/* "переводим" все наши комиты на родителя из svn — т.е. как будто мы все делали от последнего коммита в svn */ C>g rebase remotes/git-svn C>/* отправляем наши коммиты в svn */ C>git svn dcommit
спасибо за подробный ответ.
а можно сделать то же самое но залить в svn не весь мой git репозиторий, а только определенную поддиректорию с её историей изменений?
С уважением Denys Valchuk
IMHO чем больше мнений тем оптимальней выбор варианта... :)
Здравствуйте, Denys V., Вы писали:
DV>а можно сделать то же самое но залить в svn не весь мой git репозиторий, а только определенную поддиректорию с её историей изменений?
Вроде как git svn dcommit не позволяет при коммите указать какие файлы отфильтровывать, а целиком отправляет commit git'a на сервер. Мне кажется что проще создать новый git репозиторий, залить туда только необходимые коммиты и потом его уже заэкспортить в svn.
DV>>а можно сделать то же самое но залить в svn не весь мой git репозиторий, а только определенную поддиректорию с её историей изменений? C>Вроде как git svn dcommit не позволяет при коммите указать какие файлы отфильтровывать, а целиком отправляет commit git'a на сервер. Мне кажется что проще создать новый git репозиторий, залить туда только необходимые коммиты и потом его уже заэкспортить в svn.
а вот как в похожей ситуации сделать конвертацию если следующие отличия есть:
— ветки были(но мало и все мерджилось, коммитов сразу в несколько веток — не было)
— в случае конфликта — решение должно быть одно — более новый коммит — встает поверх старого, всегда и автоматически
— initial commit в git'е — это сразу достаточно много кода(там история похерена)
— в репозитории есть бинарные файлы, конфликты в них — не интересуют, тоже надо чтобы просто последния версия писалась
(грохать историю...сильно не хочется)
git 1.7(под win)
цель всего — сохранить коммит логи и хоть какую то историю того где что правилось и на какие тикеты багтрекера эти правки(ситуация что придется откатываться на старый код — в данном проекте исключена)
Здравствуйте, Denys V., Вы писали:
DV>а можно сделать то же самое но залить в svn не весь мой git репозиторий, а только определенную поддиректорию с её историей изменений?
гитовская утилита импорта репозиториев позволяет отфильтровать каталоги или переименовать их. делаешь git->git, а затем очищенный перегоняешь в svn