2016-01-26 2 views
0

J'applique un script simple pour changer le mot dans certains fichiers avec un autre mot.SVN: impossible de détecter les fichiers quand ils sont modifiés par le script shell

for x in $(find .|grep Makefile) ; 
do 
sed -i -e 's/certainWord/anotherword/g' $x ; 
done 

les changements se produisent dans le fichier lorsque je vérifie manuellement, mais lorsque je tente de valider les fichiers svn il ne sens pas que tout le monde a changé!

Est-ce un problème connu?

J'utilise outil intelligent svn pour commettre

+0

ce est l'outil ssvn? – bahrep

+0

Montrez 'svn status -v' après avoir exécuté le script. – bahrep

Répondre

1

j'ai découvert le problème. Le script ci-dessus parcourt les répertoires .svn et y modifie les fichiers en plus des fichiers de la copie de travail. c'est pourquoi il n'a pas senti le changement. car il semble qu'il compare la copie de travail avec une sous .svn {Je suis nouveau à svn: *}

ma solution qui est d'ignorer les dossiers cachés à négliger .svn répertoire

for x in $(find . -not -path '*/\.*'|grep Makefile) ; 
do 
sed -i -e 's/certainWord/anotherword/g' $x ; 
done 
+1

Pour une amélioration possible de la vitesse, utilisez la commande find suivante: '$ (find .nom .svn -prune -o -name Makefile -print)'. Cette commande ne perdra pas de temps à chercher des fichiers sous le répertoire ".svn". –