J'ai un dépôt git qui a été créé à l'origine en utilisant git-svn. J'ai maintenant un serveur git sur lequel je pousse et le dépôt svn a été perdu. Puis-je retirer la télécommande svn? Comment?
Vous pouvez modifier le .git/config
fichier et supprimez la section associée à la télécommande que vous souhaitez supprimer.
Les lignes que vous souhaitez supprimer ressemblent probablement à ceci:
[svn-remote "svn"]
url = url-of-svn-repository/trunk
fetch = :refs/remotes/git-svn
Cela supprimera la télécommande de Git, mais vous aurez toujours la relation entre les validations Git et les validations SVN stockées dans .git/svn
. Vous pouvez supprimer tout ce répertoire si vous souhaitez vous débarrasser de toutes vos télécommandes SVN. Si vous souhaitez vous débarrasser d'une seule télécommande SVN et en conserver d'autres, vous devrez regarder la structure du répertoire et supprimer uniquement celles associées à la télécommande que vous supprimez.
Le faire via la plupart des shells * nix, bash ou mingw32:
cd ~/your_repo
git config --remove-section svn
ou quelle que soit la section que vous avez lorsque vous affichez la configuration (cat .git/config
). Par exemple, la ligne suivante supprimerait la même section de configuration décrite dans la solution d'Eric :
git config --remove-section svn-remote.svn
supprimez ensuite tous les fichiers svn à l'intérieur du .git
dossier (svn, logs et refs). C'est aussi ce que suggère Sergey.
rm -rf .git/svn .git/{logs/,}refs/remotes/{git-,}svn/
ramassage des ordures juste pour faire bonne mesure:
git gc
La réponse d'Eric est correcte, mais pas complète. Même après le commentaire de Rafael Raposo. J'aimerais pouvoir commenter la réponse plutôt que d'en poster une nouvelle, mais les règles sont que vous ne pouvez pas commenter jusqu'à ce que vous atteigniez 50 points de réputation.
L'addition est:
find .git -type f -exec grep -nH git-svn "{}" \;
M'a montré que j'avais des références dans ces deux fichiers:
./.git/info/refs:4:fd34a5c...8073f3 refs/remotes/git-svn
./.git/packed-refs:5:fd34a5...cd6c33 refs/remotes/git-svn
Jusqu'à ce que je supprime ces références, je pouvais voir git-svn faire git log
Si vous n'avez pas de configuration locale et que vous voulez renoncer à faire des erreurs dans le .git
répertoire, clonez simplement le dépôt git de la télécommande git dans un nouveau répertoire et supprimez l'ancien répertoire.
Si vous disposez d'une configuration locale simple (par exemple, un utilisateur/e-mail différent de votre configuration globale), il est probablement plus facile de le faire, puis de restaurer toute configuration locale après le clonage.