SubGit

Получил непрошенное подтверждение тезиса про вред реализации веток через операцию копирования в 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 возится…

comments powered by Disqus