Как мне найти / найти / grep историю репозитория SVN? - PullRequest
7 голосов
/ 13 сентября 2010

Мне нужно найти все ревизии репозитория Subversion, чтобы найти имена файлов и номера ревизий, которые содержат определенную строку. Я знаю, что это найдет вхождения в дамп:

svnadmin dump $REPO_PATH | grep -i "Verdana"

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

Я использовал такие команды для поиска строк в текущей рабочей копии проекта:

find . -name "*.css" -print0 | xargs -0 grep "Verdana"

Формат вывода полезен, он дает как имя файла, так и строку, в которой произошла строка:

./css/forms.css: font       : 12px Verdana;

Есть ли способ найти во всех ревизиях репозитория SVN, скажем, все .css файлы, содержащие строку поиска? И не просто слово, а строка с символами подстановки или регулярное выражение типа grep?

Примечание. У меня есть root-доступ к серверу Linux с репозиторием на нем.

Также обратите внимание: я не хочу искать рабочую копию, мне нужно искать все ревизии.

Ответы [ 3 ]

5 голосов
/ 30 сентября 2013

Самый простой (и самый эффективный из найденных мною) способ сделать это, и на это нужно потратить немного времени - клонировать репозиторий svn в git, а затем использовать gitk для поиска в репозитории.

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

Я использовал для управления большим репозиторием Subversion примерно 30 разработчиков, они часто приходили ко мне на стол с просьбой, "Можете ли вы найти это изменение ..." и т. д. Я бы просто запустил Gitk!

svn log ужасно медленно, поскольку он должен поразить сервер.Кроме того, если у вас есть доступ к серверу, вам, скорее всего, придётся придумать некоторые | grep -v или похожие, чтобы отсеять все каталоги .svn.

0 голосов
/ 02 февраля 2016

Подумайте по-порядку:

svn log $location -q | grep -P 'r\d+' -o | grep -P '\d+' -o | xargs -l1 svn diff -c | grep $pattern

Я думаю, подстраивая флаги, которые вы задаете для grep, или записывая более сложный конвейер (возможно, передавая в цикл вместо использования xargs), выможет просматривать историю SVN для всего.

0 голосов
/ 13 сентября 2010

Вы пробовали

svn log --verbose

в вашем корневом каталоге, распечатывая каждое сообщение журнала и все затронутые пути. Это не позволит вам проанализировать содержимое файла, но вы, по крайней мере, сможете искать .css файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...