Общая проблема с выполнением преобразований, которые это направление - то, что репозитории Мерзавца могут содержать больше, чем просто линейная история изменений как Подверсия, ожидала бы. Несколько родословных с расходящимися историями и частыми фиксациями слияния все возможны, который не может быть легко представлен в репозитории Подверсии.
Для простых случаев, где у Вас действительно есть линейная история в Вашем репозитории Мерзавца, можно использовать git-svn dcommit
для продвижения партии до в других отношениях пустого репозитория Подверсии.
Если у вас есть GNU Grep, он должен работать следующим образом:
grep --exclude-dir=".svn"
Если вы находитесь в системе Unix без GNU Grep, попробуйте следующее:
grep -R "whatever you like" *|grep -v "\.svn/*"
Если вы используете ack («лучший grep»), он обработает это автоматически (а также сделает много других умных вещей!). Это стоит проверить.
Я думаю, что опция рекурсии --exclude - это то, что вы ищете.
grep --exclude-dir=".svn"
works because the name ".svn" is rather unique. But this might fail on a more generalized name.
grep --exclude-dir="work"
is not bulletproof, if you have "/home/user/work" and "/home/user/stuff/work" it will skip both. It is not possible to define "/*/work/*" to restrict the exclusion to only the former folder name. As far as I could experiment, in GNU grep the simple --exclude won't exclude directories.
Два grep помогут:
Второй grep будет использовать вывод первого grep как вход (через конвейер). Используя флаг -v, grep выберет строки, которые НЕ соответствуют условиям поиска. Вуаля. У вас останутся все выходные данные из первого grep, которые не содержат .svn в пути к файлу.
-v, --invert-match Инвертировать смысл соответствия, чтобы выбрать несовпадающие строки.
grep the_text_you_want_to_search_for * | grep -v.svn