web-dev-qa-db-fra.com

Comment supprimer Subversion remote dans git?

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?

50
jlconlin

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.

74
Eric

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

source/crédits

20

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

19
Sergey Markelov

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.

5
jhabbott