Есть ли способ выполнить полнотекстовый поиск в репозитории Subversion, включая всю историю?
Например, я написал функцию, которую использовал где-то, но тогда она была не нужна, поэтому я svn rm'd файлы, но теперь мне нужно найти ее снова, чтобы использовать ее для чего-то другого. В журнале svn, вероятно, написано что-то вроде «удалил неиспользуемый материал», и есть множество подобных отметок.
Редактировать 2016-04-15: Обратите внимание, что вопрос, который здесь задается термином «полнотекстовый поиск», заключается в поиске фактических различий в истории коммитов, а не в именах файлов и / или сообщениях коммитов . Я указываю на это, потому что приведенная выше формулировка автора не очень хорошо отражает это - поскольку в своем примере он мог бы также искать только имя файла и / или сообщение о коммите. Отсюда множество svn log
ответов и комментариев.
источник
--search
аргумент дляsvn log
команды. Смотрите мой ответ на stackoverflow.com/a/17473516/761095svn log --search
не выполняет полнотекстовый поиск в соответствии с требованиями @rjmunro, а только ищет автора, дату, сообщение в журнале и список измененных путей.Ответы:
источник
apt-get install git-svn
.svn log
в Apache Subversion 1.8 поддерживает новую--search
опцию . Таким образом, вы можете искать сообщения журнала истории хранилища Subversion без использования сторонних инструментов и сценариев.svn log --search
поиск по автору, дате, тексту сообщения журнала и списку измененных путей.См. SVNBook |
svn log
справочник по командной строке .источник
Если вы работаете в Windows, взгляните на SvnQuery . Он поддерживает полнотекстовый индекс локальных или удаленных репозиториев. Каждый документ, когда-либо переданный в хранилище, индексируется. Вы можете делать Google-подобные запросы из простого веб-интерфейса.
источник
Я использую небольшой скрипт, но это работает только для одного файла. Конечно, вы можете объединить это с поиском, чтобы включить больше файлов.
Если вы действительно хотите найти все, используйте
svnadmin dump
команду и выполните поиск с помощью grep.источник
Лучший способ, который я нашел, сделать это с меньшими затратами:
Как только вы получите меньше, вы можете нажать
/
для поиска, как VIM.Редактировать:
По словам автора, он хочет искать не только сообщения и имена файлов. В этом случае вам нужно будет взломать это гетто вместе с чем-то вроде:
Вы также можете заменить
grep
или что-то еще, чтобы сделать поиск для вас. Если вы хотите использовать это в подкаталоге хранилища, вам нужно будет использовать,svn log
чтобы определить первую ревизию, в которой существовал этот каталог, и использовать эту ревизию вместо0
.источник
Я искал что-то подобное. Лучшее, что я придумал - это OpenGrok . Я еще не пытался реализовать это, но звучит многообещающе.
источник
для diff вы можете использовать
--diff
опциюзатем используйте vim или nano или что угодно, что вам нравится, и выполните поиск того, что вы ищете. Вы найдете это довольно быстро.
Это не причудливый сценарий или что-то автоматизированное. Но это работает.
источник
Хотя это не бесплатно, вы можете взглянуть на Fisheye от Atlassian, тех же людей, которые предлагают вам JIRA. Это делает полнотекстовый поиск по SVN со многими другими полезными функциями.
http://www.atlassian.com/software/fisheye/
источник
Я искал то же самое и нашел вот что:
http://svn-search.sourceforge.net/
источник
Я просто столкнулся с этой проблемой и
сделал работу для меня. Вернул ревизию первого вхождения и процитировал строку, которую я искал.
источник
У меня нет никакого опыта с этим, но SupoSE (открытый исходный код, написанный на Java) является инструментом, предназначенным именно для этого.
источник
svn log -l<commit limit> | grep -C<5 or more lines> <search message>
источник
Я обычно делаю то, что говорит Джек М (использую svn log --verbose), но я использую команду grep вместо less.
источник
less
вы действительно можете увидеть версию, дату и т. Д., А не только строку в комментарии. Это обычно то, что я ищу в любом случае.Я написал это как скрипт cygwin bash для решения этой проблемы.
Однако это требует, чтобы поисковый термин в настоящее время находился в файле файловой системы. Для всех файлов, которые соответствуют grep файловой системы, затем выполняется grep всех svn diff для этого файла. Не идеально, но должно быть достаточно для большинства случаев использования. Надеюсь это поможет.
/ USR / местные / бен / svngrep
/ USR / местные / бен / svnrevisions
источник
Если вы пытаетесь определить, какая ревизия отвечает за конкретную строку кода, вы, вероятно, ищете:
Кредит: оригинальный ответ
источник
Я сталкивался с этим bash-скриптом , но не пробовал.
источник