2010-07-26 6 views
2

Я только что запустил скрипт perl, чтобы заменить все события одного слова другим для всего моего проекта.SVN не видит изменений

т.е.

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

Я хочу совершить эти изменения в подрывной деятельности, но когда я запускаю «статус СВН», ни один из измененных файлов не отображаются в списке.

То же самое происходит в TortoiseSVN с помощью «Проверить изменения».

Этот скрипт perl обходит какой-то метод, который SVN использует для проверки изменений каким-то образом?

ответ

16

Ваш скрипт работал на локальных резервных копиях svn в папке .svn. Это то, что svn использует для сравнения изменений.


Обновление: более новые версии подрывной деятельности не содержат локальную папку .svn.

+1

Отличный диагноз! –

+0

Упс! Хороший улов ... есть ли способ отменить это в этот момент? – Will

+0

Вы должны проверить проект снова. Как только вы перепутали эти файлы, все ставки отключены. –

0

Это могло случиться, что ваш сценарий Perl изменил файлы подрывной ...

3

Вы должны сделать эту команду:

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

Это grep команда настолько обычны на мои команды, которые Grep через подрывной каталоги.

+0

Возможно, вы захотите посмотреть ['ack'] (http://betterthangrep.com/), который знает, как это сделать для различных систем управления версиями. Кроме того, это отличная утилита для поиска кода. –

+1

Я бы предпочел использовать ack, но если вы настроились на использование, найдите лучше, используя силу поиска вместо post, фильтруя результаты с помощью grep. find отлично умеет полностью пропускать каталоги .svn, сохраняя при этом время рекурсии в них, а затем отбраковывая их с помощью grep. 'find ./ -name .svn -prune -or -type f -print' –

+0

Я не думаю, что эта команда будет работать правильно, если некоторые имена файлов содержат пробелы. –

Смежные вопросы