J'ai un dossier, c:\websites\test
, et il contient des dossiers et des fichiers extraits d'un référentiel qui n'existe plus. Comment faire en sorte que Subversion arrête de suivre ce dossier et tous les sous-dossiers et fichiers?
Je sais que je pourrais simplement supprimer le dossier .svn
, mais il y a beaucoup de sous-dossiers dans plusieurs couches.
De plus, si vous utilisez TortoiseSVN, exportez-le simplement vers l’emplacement actuel de la copie de travail et les dossiers et les fichiers .svn seront supprimés.
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é largement révisée. Il existe 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 (que vous utilisiez TortoiseSVN ou des outils de ligne de commande).
Sous Linux, cela fonctionnera:
find . -iname ".svn" -print0 | xargs -0 rm -r
Essayez svn export .
Vous devriez pouvoir faire quelque chose comme ça:
svn export /path/to/old/working/copy /path/to/plain/code
Et puis supprimez simplement l'ancienne copie de travail.
TortoiseSVN a également un fonctionnalité d'exportation , qui se comporte de la même manière.
Si vous utilisez Windows, vous pouvez effectuer une recherche sur ce dossier pour .svn
et cela les listera tous. Pressage Ctrl + A sélectionnera tous les éléments et le fait d'appuyer sur supprimer enlèvera tout le contenu 'embêtant' de Subversion.
Sous Linux, la commande est la suivante:
svn delete --keep-local file_name
J'ai constaté que vous n'avez même pas besoin de copier dans un emplacement temporaire. Tu peux faire un
svn export --force .
et les fichiers .svn seront supprimés in sit, laissant les autres fichiers tels quels. Très pratique et moins sujet à l'encombrement.
Sans sous-shell sous Linux pour supprimer les dossiers .svn
:
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".
Ça a bien marché pour moi:
find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf
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 ne contenait qu'un seul dossier .svn
au tout premier dossier, root. Cependant, je voulais supprimer certaines branches de la copie de travail.
Quoi que je fasse, chaque fois que je lançais une "mise à jour", les fichiers étaient restaurés et tous ramenés. Je ne voulais pas les supprimer du référentiel, mais simplement de mon ordinateur - mais je devais garder le reste de la copie de travail intacte (je ne pouvais donc 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. Vous pouvez le trouver dans les manuels à 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é. Puis exécutez svn update --set-depth exclude sur le 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 de la souris sur le dossier que vous ne voulez pas, cliquez sur Update to revision...
, puis réglez le paramètre 'Update Depth' sur Exclude
, comme indiqué dans cet écran. coup:
Utilisez la commande svn export
:
cd c:\websites\test
svn export c:\websites\test_copy
Tous les fichiers sous contrôle de version seront exportés. Vérifiez à nouveau pour vous assurer que vous n'avez rien manqué.
Supprimez simplement le dossier .svn dans le dossier requis, le contrôle sera automatiquement supprimé.
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 contextuel. Cela supprimera tous les dossiers .svn de ce dossier et tous les sous-dossiers.
Source (allemande): http://www.sjmp.de/software/alle-svn-ordner-und-dateien-loeschen/
Sous 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.
Il y a aussi un joli petit outil open source appelé SVN Cleaner qui ajoute trois options au menu contextuel de l'explorateur Windows:
Pour ceux qui utilisent NetBeans avec SVN, il existe une option 'Subversion> Export'.
Vous pouvez utiliser "svn export" pour créer une copie de ce dossier sans les données svn, ou vous pouvez ajouter ce dossier pour ignorer la liste.
La réponse est étonnamment simple - exporter le dossier vers lui-même! TortoiseSVN détecte ce cas particulier et vous demande si vous souhaitez créer une copie de travail non versionnée. Si vous répondez oui, les répertoires de contrôle seront supprimés et vous obtiendrez une arborescence de répertoires simple et non versionnée.
Une autre solution Linux (plus simple):
rm -r `find /path/to/foo -name .svn`
LE MEILLEUR ET LE PLUS FACILE
Si vous pensez que vous pourriez gagner avec une simple commande magique, vous échouerez! SVN est vraiment délicat et revient toujours avec un nouveau message d'erreur dans Xcode. Tôt ou tard, promis ... vous devez donc le faire intelligemment!
Comme vous le savez, la pratique courante et optimale sous Xcode consiste à supprimer un fichier dans le volet de projet de gauche. Si vous l'avez manqué et en quelque sorte supprimé dans le Finder, vous avez des problèmes. Grande difficulté! Mais vous pourriez le résoudre et gagner du temps si vous le faites bien.
D'abord, vous devez supprimer la référence SVN du fichier ou du dossier avant de pouvoir la supprimer
Si vous pouviez simplement remettre le fichier/dossier dans la corbeille ou annuler la dernière étape après l'avoir supprimé, alors ...
Allez au terminal - oui, au bon vieux terminal - et allez à cet endroit. Le meilleur moyen suffit de taper cd puis tirez le dossier/fichier vers le terminal. Vous obtiendrez quelque chose de similaire
cd/Users/Nom d'utilisateur/Documents/Apps_Developing/...
Tu pourrais vérifier où es-tu
ls
commande qui liste vos fichiers.
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 devrez le supprimer manuellement dans le Finder.
J'utilise rsync:
# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output
rsync -av --exclude .svn src srcStripped
A partir d'une ligne de commande Windows:
rmdir .svn /s /q
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. Le dossier SVN apparaît alors. Il suffit de supprimer ce dossier.
Les utilisateurs de NetBeans IDE peuvent le faire comme suit:
Sélectionnez le projet
clic droit Exporter Subversion
Dans la boite de dialogue
exportation dans dossier/var/tmp/nom du projet presse exportation attendra montrera complet demandera si vous voulez l'ouvrir ouvert à la volée
Vous pouvez maintenant passer à Git :)
Mon idée est de supprimer le dossier .svn, puis de déplacer tous les autres fichiers dans un nouveau dossier. C'est aussi simple que ça.
En tant que point essentiel, lorsque vous utilisez le shell pour supprimer des dossiers .svn, vous avez besoin de l'argument - depth pour empêcher commande find entrant dans le répertoire qui vient d'être supprimé et affichant des messages d'erreur tels que.
"find: ./vv: Aucun fichier ou répertoire de ce type"
En conséquence, vous pouvez utiliser la commande find
comme ci-dessous:
cd [dir_to_delete_svn_folders]
find . -depth -name .svn -exec rm -fr {} \;
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.