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.)
Réponses
Trop de publicités?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.
- exécuter un svn status
- rechercher les lignes qui commencent par "!" (manquant)
- print "--force" (svn argument) et la deuxième colonne (nom de fichier) de la sortie de #2
- 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:
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.)
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/^!//' )
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