Есть ли хорошее программное обеспечение, которое позволит мне искать через SVN-репозиторий для фрагментов кода? Я нашел "FishEye", но стоимость составляет 1200 и намного меньше моего бюджета.
Поиск хранилища SVN
Ответ 1
Если вы ищете только имя файла, используйте:
svn list -R file:///subversion/repository | grep filename
Окна:
svn list -R file:///subversion/repository | findstr filename
В противном случае проверьте и выполните поиск файловой системы:
egrep -r _code_ .
Ответ 2
Существует sourceforge.net/projects/svn-search.
Существует также приложение Windows непосредственно из дома SVN под названием SvnQuery, доступного по адресу http://svnquery.tigris.org
Ответ 3
Начиная с Subversion 1.8, вы можете использовать опцию --search
с командой svn log
. Обратите внимание, что команда не выполняет полнотекстовый поиск внутри репозитория, она учитывает только следующие данные:
- автор версии (
svn:author
неверсированное свойство), - date (
svn:date
неверсированное свойство), - текст сообщения журнала (
svn:log
неверсированное свойство), - список измененных путей (т.е. путей, затронутых конкретной версией).
Вот страница справки об этих новых параметрах поиска:
If the --search option is used, log messages are displayed only if the
provided search pattern matches any of the author, date, log message
text (unless --quiet is used), or, if the --verbose option is also
provided, a changed path.
The search pattern may include "glob syntax" wildcards:
? matches any single character
* matches a sequence of arbitrary characters
[abc] matches any of the characters listed inside the brackets
If multiple --search options are provided, a log message is shown if
it matches any of the provided search patterns. If the --search-and
option is used, that option argument is combined with the pattern
from the previous --search or --search-and option, and a log message
is shown only if it matches the combined search pattern.
If --limit is used in combination with --search, --limit restricts the
number of log messages searched, rather than restricting the output
to a particular number of matching log messages.
Ответ 4
Мы используем http://opensolaris.org/os/project/opengrok/
Ответ 5
- Создайте зеркало
git-svn
этого репозитория. - Искать добавленные или удаленные строки внутри git:
git log -S'my line of code'
или то же самое вgitk
Преимущество состоит в том, что вы можете выполнять много запросов локально, без загрузки сервера и сетевого подключения.
Ответ 6
В этом примере завершается полное содержимое репозитория в файле, после чего вы можете быстро искать имена файлов в редакторе:
svn list -R svn://svn > filelist.txt
Это полезно, если репозиторий относительно статичен, и вы хотите выполнять быстрый поиск без повторной загрузки всего с сервера SVN.
Ответ 7
Мне нравится TRAC - этот плагин может быть полезен для вашей задачи: http://trac-hacks.org/wiki/RepoSearchPlugin
Ответ 8
Просто примечание, FishEye (и многие другие продукты из Atlassian) имеют 10 долларов США Starter Editions, который в случае FishEye дает вам 5 репозиториев и доступ к 10 коммиттерам. Деньги идут на благотворительность в этом случае.
Ответ 9
Умеренно медленный (и грубо реализованный), но комбинация svn log и svn cat работает, если вы просматриваете историю одиночных файлов или небольших репозиториев:
svn log filetosearch |
grep '^r' |
cut -f1 -d' ' |
xargs -i bash -c "echo '{}'; svn cat filetosearch -'{}'"
выводит каждый номер версии, где файл был изменен, и файл. Вы всегда можете котировать каждую ревизию в другой файл, а затем grep для изменений.
PS. Массовое вознаграждение любому, кто показывает мне, как это сделать правильно!
Ответ 10
Если вы действительно в отчаянии, сделайте сброс репо (посмотрите на "svnadmin dump" ), а затем пройдите через него. Это не очень хорошо, но вы можете просмотреть результаты поиска, чтобы найти метаданные, которые указывают файл и версию, а затем проверить его для лучшего внешнего вида.
Не очень хорошее решение, но оно бесплатное. SVN не предоставляет никаких функций для поиска прошлых проверок (или даже прошлых файлов журнала, AFAIK).
Ответ 11
Многие репозитории SVN являются "просто" HTTP-сайтами, поэтому вы можете подумать о том, чтобы найти какое-то приложение для поиска в Интернете, которое вы можете указать на root SVN, и это даст вам базовые функции. Обновление его, вероятно, будет немного хитростью, возможно, некоторые проверки SVN в хакерстве могут пощекотать индекс, чтобы отменить или переделать изменения по ходу.
Просто вслух.
Ответ 12
theres krugle и koders, но оба они дороги. Оба имеют плагины ide для eclipse.
Ответ 13
Я начал использовать этот инструмент
http://www.supose.org/wiki/supose
Он отлично работает, просто не хватает визуального интерфейса, но быстро и несколько поддерживается
Ответ 14
//Edit: Инструмент уже упоминался в другом ответе, поэтому отдайте все кредиты Куряки.
Только что нашел SupoSE, который представляет собой инструмент командной строки на основе Java, который сканирует репозиторий для создания индекса, а затем может ответить на определенные виды запросов. Мы по-прежнему оцениваем инструмент, но он выглядит многообещающим. Стоит отметить, что он делает полный индекс всех изменений, включая файлы исходного кода и общие форматы офиса.