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.

Brian Boatright
la source
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).

crashmstr
la source
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
Max Cantor
la source
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.

pkaeding
la source
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».

graham.reeds
la source
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
23

Sous Linux, la commande est:

svn delete --keep-local file_name
bunteKnete
la source
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.

IJ Kennedy
la source
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".
user1439712
la source
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

brazilianldsjaguar
la source
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
Manikandan S
la source
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.

1800 INFORMATION
la source
4

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

Ramudu
la source
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/

Tobias
la source
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

andy.gurin
la source
2

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

Ladik
la source
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
Martin Buberl
la source
2

Sur Windows 7, il suffit d'ouvrir le dossier du projet et de rechercher ".svn" si les fichiers cachés sont activés et de supprimer tous les dossiers .svn trouvés.

Unknown_Guy
la source
1
Win Win XP qui fonctionne aussi très bien. Notez qu'avec SVN 1.7 les .svnrépertoires n'existent plus éparpillés. Pour plus de détails, consultez subversion.apache.org/docs/release-notes/1.7.html#wc-ng
Joao Coelho
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.

Srikanth
la source
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`
Dougvj
la source
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.

Bottier
la source
0

J'utilise rsync:

# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output
rsync -av --exclude .svn src srcStripped
beurk
la source
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 :)

Peter Mortensen
la source
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.

Alvin567
la source
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.

dush88c
la source
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.

Javier Salinas
la source
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 {} \;
fatihk
la source
0

À partir d'une ligne de commande Windows:

rmdir .svn /s /q
Michael Ross
la source
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
Ryan
la source
-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.

Praseeda
la source
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