Поиск файла в SVN с клиентской стороны

i got the problem, that i have to search for a file of a specific type( *.xxx ) within a massive 10 year wide svn history. I am not very familiar with the workings of svn. For the beginning, it would be enough to search over all repositories within the current state, and not in history depth. I think, something like this should be possible, because the TortoiseSVN Repobrowser is able to view the files in the current state, like a normal file browser. I found various other Q&A-Threads concering to the same problem, but i seems all of them assume access to the svn server.

Кроме того, я попробовал пару инструментов, на которые ссылались в этих Threads, но они не соответствуют моим потребностям. Например, «SvnQuery 1.2.2.0» и «SVN Search 1.3.0.». Оба требуют от меня указать локальный путь к репозиторию SVN. Но я думал, что репозиторий живет на сервере, а клиент просто получил рабочие копии ?! Но я могу ошибаться ...

Другой (вторичный) вопрос: можно ли отобразить все контрольные/контрольные данные CheckIn's конкретного пользователя для многолетней истории? (Опять же, с клиентским доступом.) На данный момент я просто выполняю следующую команду:

TortoiseProc.exe /command:log /path:"https://svn:9880/SvnRoot"

После этого я нажимаю кнопку «Next 100», пока не найду то, что я ищу; или мои пальцы гниют.

Кто-нибудь может мне помочь?

Искренне Ваш,

Майкл

0
nl ja de
Старайтесь задавать только один вопрос за сообщение. Если у вас несколько вопросов, сделайте несколько сообщений.
добавлено автор Tom Panning, источник

3 ответы

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

Команда, которую вы ищете, это svn ls -R% REPO% . В этом списке будут перечислены все файлы в репозитории, а -R означает рекурсивно. Оттуда вы можете отфильтровать только файлы в репозитории, которые вас интересуют, через ваш суффикс.

Можно ли отобразить все элементы CheckIn's/Commit определенного пользователя для многолетней истории? (Снова просто с доступом к клиенту.

Команда, которую вы ищете, это svn log -r {20120130} `: HEAD% REPO%. Это перечислит всю историю с 30 января 2012 года по сегодняшний день.

Оттуда вы можете отфильтровать весь журнал для конкретного пользователя.

Если вы новичок в Subversion, ознакомьтесь с руководством по Subversion в Интернете . Это один из лучших учебных пособий с открытым исходным кодом, которые я видел. Кроме того, инструмент командной строки Subversion имеет много встроенной помощи:

$ svn help
usage: svn  [options] [args]
Subversion command-line client, version 1.7.5.
Type 'svn help ' for help on a specific subcommand.
Type 'svn --version' to see the program version and RA modules
 or 'svn --version --quiet' to see just the version number.

Most subcommands take file and/or directory arguments, recursing
on the directories.  If no arguments are supplied to such a
command, it recurses on the current directory (inclusive) by default.

Available subcommands:
   add
   blame (praise, annotate, ann)
   cat
   changelist (cl)
   checkout (co)
   cleanup
   commit (ci)
   ...

Оттуда вы можете получить помощь для конкретной команды. Любой из них будет работать:

$ svn help checkout
$ svn checkout --help

TortoiseSVN поставляется с клиентом командной строки Subversion. Проверьте C: \ Program Files \ TortoiseSVN \ bin (или там, где TortoiseSVN был установлен в ваших системах). Я считаю, что он даже правильно устанавливает ваш PATH для выполнения svn.

Вы можете использовать PowerShell на своем ПК или загружать Python или Perl. Эти языки позволяют лучше манипулировать выводами командной строки из различных команд svn , а Perl и Python имеют модули Subversion, которые напрямую обрабатывают Subversion через API.

Тем не менее, я обычно использую оболочки BASH и утилиты Unix для большинства отчетов Subversion, так как я обычно делаю это прямо из командной строки без лишней суеты. Если вы знакомы с утилитами Unix и находитесь на ПК, попробуйте Cygwin, который предоставит вам оболочку BASH и большинство стандартных утилит Unix/GNU.

0
добавлено
Большое спасибо. Очень полезно и достаточно информации для решения моей проблемы.
добавлено автор Allgaeuer, источник

Если у вас есть клиент командной строки и PowerShell, вы можете сделать следующее, чтобы получить все записи журнала для конкретного пользователя:

[xml]$log = svn log --xml --verbose https://svn:9880/SvnRoot/;
$log.log.logentry|where-object {$_.author -eq "USERNAME"};

Я уверен, что есть способ сделать его одним лайнером, но он не подходит ко мне прямо сейчас.

If you want to restrict the revision range or dates, see the help for svn log

0
добавлено

See the answer to my (similar) question, which shows how to dump the log with the -l switch (to get more than the default 100) and also svnquery: How to search SVN repository for a file when I'm not sure where I put it?

0
добавлено