149 votes

svn commande pour supprimer tous les fichiers manquants localement

Dans svn, y a-t-il une commande que je peux utiliser pour supprimer tous les fichiers manquants localement dans un répertoire? Ou, à défaut, une façon de répertorier uniquement les fichiers manquants (ou, dans le cas plus général, de statut A, D,? Etc.)

190voto

Peter Ajtai Points 26377

Si vous utilisez mac (darwin) ou linux, vous pouvez rediriger les sorties des commandes suivantes pour svn rm tous les fichiers manquants. Vous pouvez définir le répertoire de travail courant vers le répertoire ou sous-répertoire avant d'exécuter ces dépendante, si vous souhaitez exécuter cet ensemble de votre copie de travail, ou seulement un sous-ensemble.

  1. exécuter un svn status
  2. rechercher les lignes qui commencent par "!" (manquant)
  3. print "--force" (svn argument) et la deuxième colonne (nom de fichier) de la sortie de #2
  4. exécuter svn rm à l'aide de la sortie de #3 comme arguments

Si l'intégralité de la commande est:

svn st | grep ^! | awk '{print " --force "$2}' | xargs svn rm

Références:

111voto

Michael Sorens Points 9637

Si vous utilisez TortoiseSVN, il suffit de faire une Vérification des Modifications, de les classer par le Statut de la colonne, sélectionnez toutes les entrées marquées missing, faites un clic droit pour ouvrir le menu contextuel, et sélectionnez Supprimer. Enfin, s'engager à publier les modifications dans le référentiel.

Si vous êtes sur Windows mais je préfère la ligne de commande et profiter de barboter dans PowerShell, ce one-liner fera l'affaire:

svn status | ? { $_ -match '^!\s+(.*)' } | % { svn rm $Matches[1] }

C'est, filtre à la sortie de seulement les lignes montrant les fichiers manquants (indiqué par un point d'exclamation au début de la ligne), capture de nom de fichier associée, et d'effectuer un svn rm sur le nom du fichier.

(http://wpquicktips.wordpress.com/2011/04/14/remove-all-missing-files-from-a-svn-working-copy/ fait quelque chose de similaire pour Unix/Linux.)

67voto

user638576 Points 62
 svn st | grep ! | cut -d! -f2| sed 's/^ *//' | sed 's/^/"/g' | sed 's/$/"/g' | xargs svn rm
 
  1. Statut svn
  2. Filtrer uniquement sur les fichiers manquants
  3. Découper le point d'exclamation
  4. Filtrer les espaces à la fin
  5. Ajouter une citation principale
  6. Ajouter une citation finale
  7. SVN enlever chaque fichier

33voto

wheresrhys Points 6087

Je viens de trouver ceci, qui fait l'affaire, supprimez tous les fichiers "manquants" d'une copie de travail SVN :

 svn rm $( svn status | sed -e '/^!/!d' -e 's/^!//' )
 

22voto

user3689460 Points 21

Merci à Paul Martin pour la version Windows.

Légère modification du script pour que les fichiers Windows avec des espaces soient également pris en compte. Le fichier missing.list sera également supprimé à la fin. J'ai enregistré les éléments suivants dans svndel.bat dans mon répertoire svn bin (défini dans mon env %% PATH) afin de pouvoir l'appeler à partir de n'importe quel dossier de la ligne de commande.

 ### svndel.bat
svn status | findstr /R "^!" > missing.list
for /F "tokens=* delims=! " %%A in (missing.list) do (svn delete "%%A")
del missing.list 2>NUL
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X