Comment supprimer le contrôle Subversion d'un dossier?


259

J'ai un dossier, c:\websites\testet il contient des dossiers et des fichiers extraits d'un référentiel qui n'existe plus. Comment puis-je faire en sorte que Subversion arrête de suivre ce dossier et l'un des sous-dossiers et fichiers?

Je sais que je pourrais simplement supprimer le .svndossier, mais il y a beaucoup de sous-dossiers dans plusieurs couches.


1
Si vous utilisez TortioseSVN, j'ai écrit un article de blog qui montre le moyen le plus rapide de le faire. Mon message contient des instructions étape par étape avec des photos. Ce message est disponible sur http://www.ecofic.com/about/blog/disconnecting-folder-from-svn
Chad Campbell

Référez-vous à ma réponse qui en a aidé beaucoup. stackoverflow.com/questions/4889619/…
Ajit Vaze

Réponses:


258

De plus, si vous utilisez TortoiseSVN, exportez simplement vers l'emplacement de copie de travail actuel et il supprimera les dossiers et fichiers .svn.

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-export.html#tsvn-dug-export-unversion

Réponse mise à jour pour Subversion 1.7:
Dans Subversion 1.7, la copie de travail a été révisée en profondeur. Il n'y a qu'un seul dossier .svn, situé à la base de la copie de travail. Si vous utilisez la version 1.7, la suppression du dossier .svn et de son contenu est une solution simple (indépendamment de l'utilisation de TortoiseSVN ou des outils de ligne de commande).


8
Le lien est maintenant un 404. Nouveau lien: tortoisesvn.net/docs/release/TortoiseSVN_en/… L'export sur-courant ne semble être qu'un cas spécial qui ne supprime que les fichiers .svn si vous dites de conserver également les fichiers non versionnés.
lilbyrdie

après la suppression réussie pour récupérer l'icône de votre dossier dans un redémarrage normal du serveur svn et c'est tout
3ehrang

Le serveur n'aurait rien à voir avec les icônes du dossier Tortoise. Mais s'ils ne se mettent pas à jour, vous pouvez essayer de tuer le processus TSVNCache. Il devrait redémarrer automatiquement.
crashmstr

1
Dans mon cas, j'ai supprimé le dossier git également avec le dossier .svn
Aftab Ahmed Kalhoro

155

Sous Linux, cela fonctionnera:

  find . -iname ".svn" -print0 | xargs -0 rm -r

10
Fonctionne également sur Mac OS.
emish

2
avant d'exécuter la commande, assurez-vous d'entrer le répertoire approprié, par exemple: cd mySVNdirectoryWhereToRemoveTheSubfolders
Camaleo

I get rm: missing operand
Winter

119

Essayez l' exportation svn .

Vous devriez pouvoir faire quelque chose comme ceci:

svn export /path/to/old/working/copy /path/to/plain/code

Et puis supprimez simplement l'ancienne copie de travail.

TortoiseSVN possède également une fonction d'exportation , qui se comporte de la même manière.


4
Merci d'avoir fourni une réponse qui fonctionne avec la ligne de commande. :) Idéal pour ceux d'entre nous qui utilisent des terminaux.
epochwolf

16
Si je comprends bien, cette commande exportera uniquement les fichiers actuellement sous contrôle de subversion. Donc, si certains fichiers ou dossiers n'ont pas encore été ajoutés à subversion ou ont été supprimés du contrôle de subversion, vous perdrez ces fichiers lors de votre exportation ...
Chris

@Chris, oui, vous avez raison. Cela exportera uniquement les fichiers versionnés. C'est bon pour exporter le code et laisser des artefacts dérivés, etc., mais ce n'est peut-être pas le bon outil pour chaque travail.
pkaeding

4
Vaut un commentaire que cela fonctionne toujours si le serveur SVN est disparu depuis longtemps; si vous essayez d'exporter en utilisant VisualSVN ou Tortoise SVN, il apparaît pour essayer de contacter le serveur, mais la version en ligne de commande ci-dessus a fonctionné pour moi sans que le serveur SVN ne fonctionne toujours.
Dave

Je reçois une erreur:svn: E000002: Can't stat '/.classpath': No such file or directory
IgorGanapolsky

32

Si vous exécutez Windows, vous pouvez effectuer une recherche sur ce dossier .svnet cela les répertoriera tous. Appuyez sur Ctrl+ Apour les sélectionner tous et appuyez sur supprimer pour supprimer tous les trucs Subversion «embêtants».


embêtant en effet ;-) J'ai juste besoin de le nettoyer et je vais le remettre dans un nouveau dépôt.
Brian Boatright

2
c'est aussi un excellent moyen de supprimer les dossiers d'extension de page d'accueil même les plus embêtants!
Brian Boatright

Téléchargez et utilisez l'utilitaire de recherche de tout pour trouver et supprimer des dossiers .svn à la vitesse de la lumière :) voidtools.com Windows uniquement!
endo64


21

J'ai trouvé que vous n'avez même pas besoin de copier vers un emplacement temporaire. Vous pouvez faire un

svn export --force .

et les fichiers .svn seront supprimés in situ , laissant les autres fichiers tels quels. Très pratique et moins sujet à l'encombrement.


4
Je ne sais pas ce que c'est, mais cela n'a pas fonctionné pour moi pour une raison quelconque.
Bélier VII

1
Cette commande ne fonctionne que pour la copie de travail, pas un dossier à l'intérieur. Peut-être une variante du même ...?

2
Cela ne fonctionnera pas si la version installée de Subversion est 1.7 et que le référentiel est pour 1.6. Cependant, la "mise à niveau svn" peut être exécutée avant l'exportation et cela fonctionnera.
Peter Mortensen

11

Sans sous-coquilles sous Linux pour supprimer des .svndossiers:

find . -name .svn -exec rm -r -f {} +

rm = remove
-r = recursive (folders)
-f = force, avoids a lot of "a your sure you want to delete file XY".

8

Aucune de ces réponses n'était satisfaisante pour ma situation. Je suis sur subversion 1.8 et j'avais une copie de travail qui n'avait qu'un seul .svndossier dans le tout premier dossier, root. Cependant, je voulais supprimer certaines branches de la copie de travail.

Peu importe ce que je faisais, chaque fois que je faisais une «mise à jour», cela restaurait ces fichiers et les ramenait tous. Je ne voulais pas les supprimer du référentiel, juste de mon ordinateur - mais je devais garder le reste de la copie de travail intact (donc je ne pouvais pas simplement supprimer le dossier .svn).

Solution? svn update --set-depth exclude <dir>

Il s'agit d'une "mise à jour" côté client qui exclut un répertoire spécifique. Il peut être trouvé dans les manuels sur svnbook.com . En bref, il décrit ceci comme:

À partir de Subversion 1.6, vous pouvez adopter une approche différente. Tout d'abord, consultez le répertoire dans son intégralité. Ensuite, exécutez svn update --set-depth exclude sur le seul sous-répertoire qui ne vous intéresse pas.

Pour TortoiseSVN, vous pouvez également faire la même chose en cliquant avec le bouton droit sur le dossier que vous ne souhaitez pas, en cliquant sur Update to revision..., puis en définissant la «profondeur de mise à jour» Exclude, comme indiqué dans cette capture d'écran:

entrez la description de l'image ici


Cependant, vous ne pouvez pas supprimer les dossiers racine de copie de travail.
JaBe

8

Ça a bien marché pour moi:

find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf

C'est une solution tellement simple, mais qui fonctionne comme un charme.
IgorGanapolsky

@IgorGanapolsky, je suis content. Ma solution vous est aidée.
Manikandan S

tant que personne n'a couru mkdir -p ';echo Hi Johnny;/.svn'- dans ce cas, l'invocation {} de find devrait quand même fonctionner
Never Sleep Again

7

Utilisez la svn exportcommande:

cd c:\websites\test
svn export c:\websites\test_copy

Tous les fichiers sous contrôle de version seront exportés. Vérifiez bien pour ne rien manquer.


4

Supprimez simplement le dossier .svn dans le dossier requis, puis le contrôle sera automatiquement supprimé.


3

Sous Windows, vous pouvez ajouter un lien rapide pour cela dans le menu contextuel de votre explorateur. Il suffit de démarrer ce script de registre:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN]
@="Delete SVN Folders"

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

Cela ajoutera un élément appelé "Supprimer les dossiers SVN" à votre menu de clic droit. Cela supprimera tous les dossiers .svn de ce dossier et tous les sous-dossiers.

Source (allemand): http://www.sjmp.de/software/alle-svn-ordner-und-dateien-loeschen/


2

Vous pouvez utiliser "exportation svn" pour créer une copie de ce dossier sans données svn, ou vous pouvez ajouter ce dossier pour ignorer la liste


2

Pour ceux qui utilisent NetBeans avec SVN, il existe une option 'Subversion> Exporter'.


2

Il existe également un joli petit outil open source appelé SVN Cleaner qui ajoute trois options au menu contextuel de l'Explorateur Windows:

  • Supprimer tout .svn
  • Supprimer tout sauf racine .svn
  • Supprimer les fichiers de dépôt locaux



1

La réponse est étonnamment simple - exportez le dossier vers lui-même ! TortoiseSVN détecte ce cas spécial et vous demande si vous souhaitez rendre la copie de travail sans version. Si vous répondez oui, les répertoires de contrôle seront supprimés et vous aurez une arborescence de répertoires simple et non versionnée.


1
N'est-ce pas simplement reprendre la réponse acceptée donnée il y a 5 ans?
Ben Thurley

1

Une autre solution Linux (plus simple):

rm -r `find /path/to/foo -name .svn`

1

LA MEILLEURE ET LA PLUS FACILE

Si vous pensez que vous pourriez gagner avec une simple commande magique, vous échouez! SVN est vraiment délicat et revient toujours en quelque sorte avec un nouveau message d'erreur dans Xcode. Tôt ou tard, promettez ... alors vous devez le faire intelligemment!

Comme vous le savez, la pratique courante sous Xcode consiste à supprimer un fichier dans le volet projet à gauche. Si vous l'avez manqué et que vous l'avez supprimé dans le Finder, vous avez des problèmes. Grande difficulté! Mais vous pouvez le résoudre et gagner du temps si vous le faites bien.

Tout d'abord, vous devez supprimer la référence SVN au fichier ou dossier avant de pouvoir le supprimer réellement

  1. Si vous pouviez simplement remettre le fichier / dossier dans la corbeille ou annuler la dernière étape lorsque vous l'avez supprimé, alors ...

  2. Allez au Terminal - oui, le bon vieux terminal - et allez à cet endroit. Le meilleur moyen est de taper cd puis de tirer le dossier / fichier vers le terminal. Vous obtiendrez quelque chose de similaire

cd / Users / UserName / Documents / Apps_Developing / ...

Vous pouvez vérifier où vous êtes

ls

commande qui répertorie vos fichiers.

  1. Ensuite, vous devez supprimer la référence svn avec une commande SVN:

    svn delete --keep-local fileName_toDelete

Cela supprimera le fichier du référentiel SVN, MAIS vous devez le supprimer manuellement dans le Finder.


0

J'utilise rsync:

# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output
rsync -av --exclude .svn src srcStripped

0

Les utilisateurs de NetBeans IDE peuvent le faire comme ci-dessous:

  1. Ouvrez le projet SVN dans votre IDE
  2. Sélectionnez le projet

    clic droit sur Subversion Export

  3. Dans la boite de dialogue

    exporter vers le dossier / var / tmp / projectname appuyez sur l'exportation attendre affichera terminé demandera si vous voulez l'ouvrir ouvrir à la volée

  4. Vous pouvez maintenant passer à Git :)


0

Mon idée est de supprimer le dossier .svn, puis de déplacer tous les autres fichiers vers un nouveau dossier. C'est aussi simple que ça.


0

Lorsque vous utilisez le système d'exploitation Windows, accédez à l'emplacement de votre dossier et vérifiez que les fichiers cachés sont ouverts, puis vous pouvez y voir le dossier SVN . Supprimez simplement ce dossier.


0

svn export fonctionne bien, mais je pense que c'est:

svn rm --keep-local <folder/file>

Il le supprime de votre référentiel local.


0

Comme point vital, lorsque vous utilisez le shell pour supprimer des dossiers .svn, vous avez besoin de l' argument -depth pour empêcher la commande find d' entrer dans le répertoire qui vient d'être supprimé et d'afficher des messages d'erreur comme par exemple

"find: ./.svn: aucun fichier ou répertoire de ce type"

Par conséquent, vous pouvez utiliser la findcommande comme ci-dessous:

cd [dir_to_delete_svn_folders]
find . -depth -name .svn -exec rm -fr {} \;


0

Utilisez le suivant:

svn rm --keep-local <folder name> pour supprimer le dossier et tout ce qu'il contient.

svn rm --keep-local <folder name>/* pour conserver le dossier, mais supprimez tout ce qu'il contient.

Voici un exemple de ce qui se passe:

~/code/web/sites/testapp $ svn rm --keep-local includes/data/*
D         includes/data/json
D         includes/data/json/index.html
D         includes/data/json/oembed
D         includes/data/json/oembed/1.0
D         includes/data/json/oembed/1.0/embed1.json
D         includes/data/json/oembed/1.0/embed2.json
D         includes/data/json/oembed/1.0/embed3.json

-1

Sur Windows 10, nous devons aller à Windows Explorer, puis aller à Viewet cocher la case View hidden files.

Accédez ensuite au dossier auquel le SVN est lié dans l'Explorateur Windows et supprimez le .svndossier / fichier.


Bien que j'aie modifié la mise en forme, cette réponse ne répond pas réellement à la question. L'utilisateur sait déjà comment supprimer le .svndossier de base , mais il pose des questions sur tous les sous-dossiers. Veuillez lire attentivement la question.
CodeMouse92
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.