问题
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