Ответ 1
Здесь перечислены все файлы рекурсивно:
svn ls -R URL-OF-REPO
Я обращаюсь к удаленному хранилищу SVN больших. Поскольку мне обычно нужен только крошечный поднабор его содержимого, я сделал "редкую проверку":
svn checkout --depth empty svn+ssh://... src
Всякий раз, когда мне нужна папка из репозитория, я могу просто сделать
svn up folder
и когда мне это больше не нужно, я использую
svn up --set-depth exclude folder
Но теперь мне нужен полный список all файлов в репозитории, и я не хочу делать полную проверку, чтобы получить имена файлов и папок.
Я уже пробовал svn ls -R
, который действительно будет перечислять некоторые файлы, которые я не проверял, но все еще есть некоторые недостающие. Я знаю, потому что он показывает все в текущем каталоге. Теперь я мог бы выполнить вручную svn ls
и svn up --depth empty
для каждого нового каталога, но мне интересно, есть ли какая-то лучшая альтернатива.
В отличие от Как мне перечислить все файлы, когда-либо зафиксированные в репозитории? Меня интересует только текущий контент репозитория, и у меня нет доступа до svnadmin
. Я также не могу установить программное обеспечение на сервере репозитория.
Здесь перечислены все файлы рекурсивно:
svn ls -R URL-OF-REPO
svn list --recursive https://myrespository.my.com/Myproject
Я думаю, что работает для текущего и всех подкаталогов, как я и пытался. В этом списке перечислены все ветки и теги, а также все их подкаталоги и файлы.
Вы можете попробовать мою утилиту fast-svn-crawler, это гораздо быстрее, чем "svn list --recursive".
$ svn-crawler https://myrespository.my.com/Myproject
Без URL
svn list --recursive -r HEAD
Если вы хотите получить полный список всех файлов, а не папок, вы можете передать команду svn list и grep следующим образом:
svn list -R svn://url/to/your/main/folder/on/repo | grep '[^\/]$'
путь к папкам, указанным в
svn list -R svn://url/to/your/main/folder/on/repo
всегда заканчивается на "/", а путь к файлу - нет. Выход передается как вход для
grep '[^ \/] $'
который исключает все пути, имеющие конечный "/"; остальные пути связаны только с файлами.
Пример: допустим, у нас есть репозиторий с именем myrepo на my.svnserver.com в качестве домена, и мы хотим получить все файлы, перечисленные в подкаталоге myrepo i.e. mysubdir: команда
svn list -R svn://my.svnserver.com/myrepo/mysubdir | grep '[^\/]$'
Кроме того, если вы передаете результат команде wc -l (которая печатает количество строк новой строки, так как каждая выходная строка содержит только один путь), вы можете получить количество всех файлов в mysubdir, например
svn list -R svn://my.svnserver.com/myrepo/mysubdir | grep '[^\/]$' | wc -l