Подтвердить что ты не робот

Поиск в репозитории SVN для имени файла

У нас есть объемный репозиторий для кода, содержащий тысячи папок и подпапок, я хочу искать в этом репозитории имя файла или с некоторым словом.

Root folder
    a\
    b\
    c\
    d\
    e\
    f\ab\
    f\ab\cd.txt

Я хочу найти cd.txt, но не знаю, где он находится в репозитории SVN, потому что я хочу выполнить поиск в корневой папке SVN, где я поставлю имя файла cd.txt и запустим команду, проверит в каждой папке и отобразит результат сведений о файле....

Требование надежды ясно. Не могли бы вы помочь мне в этом.

4b9b3361

Ответ 1

Если файл находится в вашей рабочей копии, то если вы используете svn 1.5:

svn list --depth infinity | grep <filename>

или более ранняя версия svn:

find . -name <filename> -not -path '*.svn*'

Если вам нужно найти файл в истории (удален или перемещен):

svn log -v | less

и найдите его с помощью:

\<filename><return>

Ответ 2

Следующие работы для меня (svn version 1.4.6)

svn list -R <URL> | grep "<file_pattern>"

Ответ 3

С доступом к самому РЕПО используйте (например, в svn host file sytem)

svnlook tree [path_to_repo] | grep [file_name]  

или для поиска всех репозиториев (если у вас есть настройка mulitple repos).

for i in \`ls [path_to_repos_dir]`; do echo $i; svnlook tree [path_to_repos_dir]/$i | grep -i [file_or_folder_name]; done 

опция --full-paths предоставит полный путь в репо к файлу (если найден)

Пример:

for i in `ls /u01/svn-1.6.17/repos`; do echo $i; svnlook tree --full-paths /u01/svn- 1.6.17/repos/$i | grep -i somefile.txt; done

перенаправить вывод в файл, если требуется статическая копия.
предполагает использование nix OS.

Ответ 4

svn list --depth infinity <your-repo-here>, чтобы получить список файлов в репо, а затем svn cat, чтобы получить содержимое. Вы можете добавить ключ --xml в команду list, чтобы сделать синтаксический анализ немного проще.

Ответ 5

Недавно я опубликовал мою утилиту , чтобы перечислить репозиторий, что намного быстрее, чем подход "svn ls --depth infinity". Вот тесты . Он просто вызывает функцию, которая доступна в внутреннем API Subversion, но теперь доступна через командную строку.

Итак, вы можете запустить

$ svn-crawler <URL> | grep "<file_pattern>"

Ответ 6

Если вы используете TortoiseSVN, вы можете попробовать это, ЕСЛИ вы готовы посмотреть Project by Project - работает для меня:

  • Создайте пустой проект под URL верхнего уровня вашего репозитория, назовите его BLANK
  • Нажмите на ссылку Repo на левой панели
  • В правой панели выберите свой проект BLANK и ваш желаемый проект - скажем, trunk
  • Щелкните правой кнопкой мыши, чтобы открыть меню браузера и выберите "Сравнить URL-адреса", в зависимости от размера вашего репо для загрузки может потребоваться минута. Но вы в основном получаете весь список проектов в списке "готовый к поиску".
  • Введите имя файла или другую строку в поисковом фильтре

Ответ 7

Если ваш удаленный репозиторий не огромен, тогда простой способ: Вы можете сделать "checkout", чтобы получить локальный репозиторий. Если вы находитесь в Windows-машине, вы используете команду "Поиск" или Linux, используя команду "Найти".