SubGit
May 15, 2018 · CommentsПрограммированиеSVNGit
Получил непрошенное подтверждение тезиса про вред реализации веток через операцию копирования в Subversion. Вторую неделю бодаюсь с импортом SVN в Git с помощью SubGit. SubGit довольно неплохо с этим справляется. Особенно хорошо то, что он может постоянно синхронизировать SVN и Git, делая переход с одного на другой плавным и безболезненным. Он даже со всякими противоестественными манипуляциями со структурой веток в SVN репозитории справляется.
Но и на старуху найдется свой Раскольников. При создании одного из зеркал был указан не корневой адрес SVN, а https://foobar/svn/xyz. Зеркало прекрасно жило своей зеркальной жизню, пока не было обнаружено, что часть истории отсутствует. Для её восстановления родился план - заново импортировать все из корня (https://foobar/svn), а затем, уже на стороне Git, - сшить старую и новую историю вместе.
Отличный был план. И, что самое главное, и SubGit и Git все эти фокусы позволяют
и поддерживают. За одним маленьким исключением… Как выяснилось, менять адрес
с https://foobar/svn/xyz на https://foobar/svn категорически не получается.
Вернее получается, но результат выходит как-то не очень. SubGit пытается
импортировать историю (и находит все правильные коммиты, что характерно), но
затем пытается заново засунуть их обратно в SVN. SVN кричит “что вы в меня это
пихаете?” SubGit ужасно смущается, бормочет многоэтажные стек-трейсы в лог и
заодно сносит master
к праотцам.
Эх… Буду теперь с git replace
возится…