How to list all files in a remote SVN repository?

谁说我不能喝 提交于 2019-12-04 08:04:44

问题


I access a large remote SVN repository. Since I usually only need a tiny subset of its content I did a "sparse checkout":

svn checkout --depth empty svn+ssh://... src

Whenever I need a folder from the repository I can just do

svn up folder

and when I don't need it anymore I use

svn up --set-depth exclude folder

But now I need a complete list of all the files in the repository and I don't want to do a complete checkout just to get the file and folder names.

I already tried svn ls -R which will indeed list some files I didn't check out but still there are some missing. I know because it does show everything in the current directory. Now I could semi-manually execute svn ls and svn up --depth empty for every new-found directory, but I wonder if there is some better alternative.

In contrast to How do I list all files ever committed to the repository? I'm only interested in the current content of the repository and I do not have access to svnadmin. Neither can I install software on the repository server.


回答1:


This lists all files recursively:

svn ls -R URL-OF-REPO



回答2:


svn list --recursive https://myrespository.my.com/Myproject

I think that works for current and all subdirectories as I tried. This one lists all branches and tags as well, and all their subdirectories and files.




回答3:


You can try my utility fast-svn-crawler, it is much faster than "svn list --recursive".

$ svn-crawler https://myrespository.my.com/Myproject



回答4:


Without URL

svn list --recursive -r HEAD




回答5:


If you want to get a complete list of all the files and not the folders, you can pipe svn list and grep command like this:

svn list -R svn://url/to/your/main/folder/on/repo | grep '[^\/]$'

the path to folders listed by

svn list -R svn://url/to/your/main/folder/on/repo

always ends with "/" while file path doesn't. The output is passed as an input to

grep '[^\/]$'

which excludes all the paths having a trailing "/"; the remaining paths are only related to files.

Example: let's assume we have a repository named myrepo on my.svnserver.com as a domain, and we want to get all the files listed in a subdirectory of myrepo i.e. mysubdir: the command is

svn list -R svn://my.svnserver.com/myrepo/mysubdir | grep '[^\/]$'

Also, if you pipe the result to wc -l command (which prints the number of newlines, as each output line contains one path only), you can get the number of all the files under mysubdir, like this

svn list -R svn://my.svnserver.com/myrepo/mysubdir | grep '[^\/]$' | wc -l


来源:https://stackoverflow.com/questions/14646798/how-to-list-all-files-in-a-remote-svn-repository

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!