2010-07-26 12 views
2

J'ai juste couru un script Perl pour remplacer toutes les occurrences d'un mot pour un autre pour mon projet entier.SVN ne pas voir les changements

-à-dire:

perl -e "s/OLD/NEW/g;" -pi $(find ./ -type f) 

Je veux valider ces modifications à la subversion, mais quand je lance « svn status », aucun des fichiers modifiés apparaissent sur la liste.

La même chose se produit dans TortoiseSVN en utilisant la « Vérifier les modifications ».

ce script perl at contourner une méthode qui utilise SVN pour vérifier les changements en quelque sorte?

Répondre

16

Votre script fonctionne sur les copies locales de sauvegarde svn dans le dossier svn. C'est ce que svn utilise pour comparer les changements. Mise à jour: les versions les plus récentes de subversion ne conservent pas un dossier local .svn.

+1

Excellent diagnostic! –

+0

Oups! Bonne prise ... y a-t-il un moyen de renverser la situation à ce stade? – Will

+0

Vous devriez vérifier le projet à nouveau. Une fois que vous avez joué avec ces fichiers, tous les paris sont désactivés. –

0

Il aurait pu arriver que votre script Perl a changé les fichiers de subversion ...

3

Vous devez faire cette commande:

perl -e "s/OLD/NEW/g;" -pi $(find ./ -type f | grep -v '/\.svn/') 

Cette commande grep est si commun sur mes commandes grep par la subversion répertoires.

+0

Vous voudrez peut-être regarder [ 'ack'] (http://betterthangrep.com/) qui sait comment faire ce genre de chose pour une variété de systèmes de contrôle de source. En outre, c'est un excellent utilitaire pour chercher dans le code. –

+1

Je voudrais seconder l'utilisation de ACK, mais si vous êtes déterminé à utiliser trouver votre mieux en utilisant la puissance de trouver au lieu de post-filtrage des résultats avec grep. find est parfaitement capable d'ignorer complètement les répertoires .svn, ce qui vous évite de devoir les récurer et de les supprimer avec grep. 'find ./ -name .svn -prune -ou -type f -print' –

+0

Je ne pense pas que cette commande fonctionnera correctement si certains noms de fichiers contiennent des espaces. –