2008-11-05 7 views
22

Y at-il un moyen de supprimer un dossier, appelons-le FolderX à partir d'un tronc SVN récursivement? Une recherche rapide sur Google me dit seulement comment supprimer récursive tous les dossiers .svn et ce n'est pas ce que je veux faireSVN récursif delete

+0

Qu'est-ce qui ne va pas avec "svn rm FolX"? –

+1

Il dit qu'il y a plusieurs répertoires FOIX répartis dans l'arbre.Votre commande n'en supprimera qu'une dans le répertoire en cours. –

Répondre

31

Essayez quelque chose comme ce qui suit sur un système POSIX:

find ./ -name "FolderX" | xargs svn delete --force 

Ce trouvera tout les fichiers/dossiers correspondants commençant dans le répertoire courant et exécutant l'action sur eux, c'est-à-dire svn delete. Je ne suis pas sûr de savoir comment faire cela dans Windows, mais sans cygwin.

Pour win32, l'intervenant propose ci-dessous une solution similaire (cmd):

for /R . %1 in (*.EXT) do svn delete %1 
+1

Je souhaite vraiment qu'il y avait une commande d'invite de commande Windows équivalente pour cela. Je pourrais installer cygwin je suppose. –

+3

Trouvé, je voulais récursivement supprimer tous les fichiers * .EXT de mon référentiel, qui dans Win32 commande (DOS) invite termes est: pour/R. % 1 in (* .EXT) do svn remove% 1 –

+0

Ok, j'ai mis à jour la réponse. –

4

svn delete FolX --force devrait faire l'affaire, même s'il y a des fichiers versionnés dans la sous-arborescence.

+1

Il a dit FolX (pour "Dossier X"), pas FOIX :) – ngn

3
find . -name ".svn" -exec rm -rf {} \; 

Source: Recursive SVN delete

+7

Ce n'est pas pertinent. La question portait sur la suppression de svn repo, pas localement. – pmod

+0

il n'avait pas besoin de ça – kappa

0

J'ai créé un SH pour exécuter facilement une commune "rm".

  • dans le fichier "/ usr/bin" Je crée "rm_svn_dirs", un put:

#!/bin/bash

if [ $\# -eq 0 ] ; then

echo 
    echo "Path not found" 
    echo "Use:" 
    echo " $0 path"` 
    echo " $0 /var/www/test/svn/website" 
    echo " $0 ." 
    echo "Operation cancelled" 
    echo 
    exit 1 
fi 

echo 
echo "Recursively delete .svn directories in:" 
if [ $1 != "." ] ; then 
    echo $1 
else 
    pwd 
fi 

echo 
read -p "Continue? [Yes/No]: " x 
if [ "$x" != "Yes" ] ; then 
    echo "Operation cancelled" 
    echo 
    exit 1 
fi 

find $1 -name .svn -exec rm -rf {} \; 
echo "End!" 
echo 
exit 0` 
  • Enregistrer le fichier, et le rendre exécutable:

    chmod +x rm_svn_dirs

  • Pour utiliser:

    rm_svn_dirs /var/www/svn/www

    rm_svn_dirs ./svn/www

    rm_svn_dirs .

0

Il a bien fonctionné pour moi

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

Ne pas oublier de doubler le%, si vous voulez l'utiliser dans un fichier batch:

pour/R. % 1 (* .EXT) ne supprimer svn% 1

_

pour/R. %% 1 in (* .EXT) faire svn delete %% 1