LINUX.ORG.RU

Импорт svn в git с сохранением всей истории и всех веток

 , ,


1

2

Понадобилось мне тут для дружественного проекта импортировать старый svn репозиторий в git.

Задача не сложно решается, если в проекте одна ветка – trunk, и не понтяно как решается, если веток несколько, да еще и разработчики постоянно переключают trunk с ветки на ветку, перезаписью файлов (ну ладно, один раз они так сделали)

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

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

После чего как мог описал проделанное на ангельском языке, и положил в гит.

https://gitlab.com/dhyannataraj/svn-to-git-full-import

Может быть кому-то пригодиться

★★★

Задача не сложно решается, если в проекте одна ветка – trunk, и не понтяно как решается, если веток несколько, да еще и разработчики постоянно переключают trunk с ветки на ветку, перезаписью файлов (ну ладно, один раз они так сделали)

A git svn подобные use case’ы не отрабатывает?

EXL ★★★★★
()
Ответ на: комментарий от EXL

Еще раз попробовал натравить git-svn на исходный репозитрий. Получил одну ветку master не смотря на --stdlayout

git svn clone --stdlayout svn://svn.nataraj.su/libtcod-svn-repo/

https://gitlab.com/dhyannataraj/libtcod-svn-history-tmp/-/network/master

Более того, в исходном репозитрии, переключали trunk на ветку брутфорсом: https://gitlab.com/dhyannataraj/libtcod-svn-history-tmp/-/commit/ed6737a690ed27d94beb508f20cf0c91a8524f44 при этом в процессе перетасовали CRLF<->LF окончания строк.

Такое автоматикой не думаю что вообще возьмется…

shaplov ★★★
() автор топика