How to list all files in a remote SVN repository?

2019-03-12 06:36发布

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.

5条回答
smile是对你的礼貌
2楼-- · 2019-03-12 06:57

This lists all files recursively:

svn ls -R URL-OF-REPO
查看更多
可以哭但决不认输i
3楼-- · 2019-03-12 07:00

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

$ svn-crawler https://myrespository.my.com/Myproject
查看更多
看我几分像从前
4楼-- · 2019-03-12 07:03
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.

查看更多
唯我独甜
5楼-- · 2019-03-12 07:09

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
查看更多
一纸荒年 Trace。
6楼-- · 2019-03-12 07:14

Without URL

svn list --recursive -r HEAD

查看更多
登录 后发表回答