Я большой поклонник Git Grep. Существует ли эквивалент в Subversion?
3 ответа
Хотя это и не идеальное решение, я использую следующее, чтобы просмотреть ревизии определенного файла:
for rev in `svn log FILE_TO_SEARCH | grep '^r[0-9][0-9]* ' | cut -f1 -d" "`; do svn cat -$rev FILE_TO_SEARCH 2>/dev/null | grep -q PATTERN_TO_FIND && echo $rev;done
Вывод представляет собой список номеров ревизий этого файла, которые содержат строку.
Как ответили в Исключить .svn каталоги из grep:
grep --exclude-dir=".svn"
Эта функция svngrep
обеспечивает базовую функциональность, аналогичную git grep
:
svngrep() { grep --color=always --exclude-dir=".svn" -r "$1" . | less -R; }
вставить в свой .bashrc
.
Svn может перечислить файлы, которые он имеет под контролем исходного кода, и вы можете передать список файлов в командную строку grep с помощью xargs. Чтобы обрабатывать имена файлов с пробелами, вы добавляете опцию " -d '\n'
" в xargs. Чтобы молча пропускать каталоги, упомянутые svn, вы используете опцию " -d skip
" для grep. Возможно, вы захотите использовать egrep вместо grep, который имеет более регулярный синтаксис (больше похожий на perl).
svn ls -R | xargs -d '\n' grep -d skip thingtogrepfor