8
votes

STRIT SVN pour valider un ensemble de fichiers supprimés

J'ai supprimé de nombreux fichiers de ma copie locale qui étaient présents dans différents sous-répertoires du répertoire principal. Je souhaite supprimer tous les fichiers supprimés localement de mon référentiel SVN également.

Si je vérifie le statut SVN de mon répertoire principal à l'aide de svn st main_dir alors tous les fichiers supprimés s'affichent avec '!' symbole qui signifie que les fichiers correspondants sont manquants. Mais ces fichiers ne sont pas supprimés de mon référentiel SVN, même si j'engage mes modifications à l'aide de svn ci main_dir .

existe une manière ou une commande ou un script pour supprimer tous les fichiers supprimés localement de mon répertoire principal et de mon sous-répertoires de mon référentiel SVN. Je pense que nous pouvons faire boucle à travers tous les fichiers de chaque dossier et supprimer les fichiers supprimés localement de SVN en cochant le fichier SVN correspondant ('!'), Mais je ne sais pas comment convertir mon idée à un script.

Quelqu'un peut-il m'aider s'il vous plaît à terminer cette tâche? Merci d'avance ...

siva


1 commentaires

Consultez ma réponse sur une question que c'est essentiellement une dupe d'ici: Stackoverflow.com/questions/1308136/...


5 Réponses :


0
votes

Vous auriez dû utiliser SVN Supprimer chemin pour supprimer ces fichiers. De cette façon, ils sont supprimés des deux, votre système de fichiers et la copie de travail.

voir SVN Supprimer pour plus de détails.

Je vous suggère SVN Update pour récupérer les fichiers du référentiel distant et supprimez-les à l'aide de SVN Supprimer .


2 commentaires

Je n'ai pas supprimé ces fichiers manuellement, en réalité lors de la mise à niveau de l'une de mes bibliothèques de ma tierce partie, certains des anciens fichiers ont été supprimés de l'ancienne version de cette bibliothèque. J'ai donc juste besoin de supprimer ces fichiers de mon référentiel SVN aussi.


Cela vous obligerait à supprimer des fichiers uniquement à l'aide de SVN Supprimer , qui est très fastidieuse et parfois impossible du tout (par exemple, lorsque vous synchronisez la copie de travail avec une autre version du projet).



18
votes

car je en $ (svn st | grep \! | awk '{imprimer $ 2}'); SVN Supprimer $ i; terminé


4 commentaires

Merci beaucoup Gadolin, cela fonctionne parfaitement. Je suis très nouveau à ce script, pouvez-vous s'il vous plaît expliquer un peu cette déclaration afin que je puisse comprendre correctement.


1. Le GREP ne prend que des lignes de SVN Statut qui commence avec!, De sorte que ceux-ci sont intéressés, alors que SVN Statut Sortie a deux colonnes, AWK prend la deuxième colonne (où le nom du fichier est), puis chaque fichier est pris en entrée pour la boucle comme 'i'. En boucle intérieure, j'appelle svn Supprimer $ i, où $ i est substitué par fichier.


Merci pour votre explication Gadolin.


Échoue s'il y a des espaces n'importe où dans le chemin de fichier.



1
votes
for i in $(svn st | grep \! | awk '{print $2}'); do svn delete $i'@'; done
For files with @2x in them.

1 commentaires

vous êtes mon sauveur! : D Son tellement difficile à rechercher dans Google ou donc à "Svn Supprimer @ 2x" et à obtenir la bonne réponse! Merci encore!



3
votes

J'ai trouvé Xargs plus facile que la boucle pour la boucle:

svn stat | grep \\! | awk '{print $2}' | xargs svn remove


0 commentaires

0
votes

fonctionne également avec l'espace blanc dans les noms de fichier:

svn st | grep ! | sed 's/!\s*//' | xargs -I{} svn remove '{}'


0 commentaires