Sur la base de certaines des autres réponses à cette question, j'ai mis au point un script Ruby qui gère le déplacement de git-svn. Vous pouvez le trouver sur https://gist.github.com/henderea/6e779b66be3580c9a584 .
Il gère le déplacement sans extraire une autre copie, et il gère même le cas où il y a des modifications non poussées dans une ou plusieurs branches (car cela rompt la logique régulière). Il utilise des éléments de la réponse git filter-branch (pour la logique principale) et la réponse sur la copie de branches d'une instance du dépôt vers une autre (pour copier des branches avec des modifications non poussées).
Je l'ai utilisé pour déplacer un tas de dépôts git-svn que j'ai pour le travail, et cette version du script (j'ai traversé d'innombrables itérations) semble fonctionner pour moi. Ce n'est pas très rapide, mais il semble gérer tous les cas que j'ai rencontrés et aboutir à un dépôt entièrement relocalisé.
Le script vous donne la possibilité de créer une copie du dépôt avant d'apporter des modifications, vous pouvez donc utiliser cette option pour créer une sauvegarde. La création d'une copie est requise si vous avez des modifications non poussées dans des branches.
Le script n'utilise pas de gemmes ou d'autres bibliothèques non incluses dans l'installation normale de MRI Ruby. Il utilise les bibliothèques readline et fileutils incluses dans l'IRM.
J'espère que mon script sera utile à quelqu'un d'autre. N'hésitez pas à apporter des modifications au script.
REMARQUE: je n'ai testé ce script qu'avec git 2.3.0 / 2.3.1 et Ruby 2.2.0 sur OS X 10.10 Yosemite (puisque c'est l'environnement que j'utilise), mais je m'attendrais à ce qu'il fonctionne également sur d'autres environnements. Aucune garantie sur Windows, cependant.