На основі деяких інших відповідей на це питання, я придумав сценарій Ruby, який обробляє переміщення git-svn. Ви можете знайти його на https://gist.github.com/henderea/6e779b66be3580c9a584 .
Він обробляє переїзд, не перевіряючи іншу копію, і навіть обробляє випадок, коли в одній або декількох гілках відбуваються непроштовхувані зміни (оскільки це порушує звичайну логіку). Він використовує речі з відповіді на фільтр-гілку git (для основної логіки) та відповідь про копіювання гілок з одного екземпляра репо в інший (для копіювання гілок із ненадаленими змінами).
Я використовував це, щоб перенести купу репозиторіїв git-svn, які я маю для роботи, і ця версія сценарію (я пройшов безліч ітерацій), здається, працює для мене. Це не надшвидко, але, схоже, воно розглядає всі випадки, з якими я стикався, і призводить до повністю перенесеного репо.
Сценарій дає вам можливість створити копію репозиторію перед внесенням будь-яких змін, тому ви можете використовувати цю опцію для створення резервної копії. Створення копії потрібно, якщо в будь-яких гілках було внесено зміни.
Сценарій не використовує дорогоцінних каменів та інших бібліотек, не включених до звичайної установки МРТ Ruby. Він використовує бібліотеки readline та fileutils, включені до МРТ.
Сподіваюся, мій сценарій виявиться корисним комусь іншому. Не соромтеся вносити зміни в сценарій.
ПРИМІТКА: Я протестував цей сценарій лише з git 2.3.0 / 2.3.1 та Ruby 2.2.0 на OS X 10.10 Yosemite (оскільки це середовище, яке я використовую), але я мав би очікувати, що він буде працювати і в інших середовищах. Однак жодних гарантій щодо Windows.