如何列出远程SVN存储库中的所有文件?

如何列出远程SVN存储库中的所有文件?,svn,repository,remote-access,Svn,Repository,Remote Access,我访问一个大型的远程SVN存储库。由于我通常只需要其内容的一小部分,所以我进行了“稀疏签出”: 每当我需要存储库中的文件夹时,我都可以这样做 svn up folder 当我不再需要它的时候,我用 svn up --set-depth exclude folder 但是现在我需要一个存储库中所有文件的完整列表,我不想为了得到文件名和文件夹名而进行完整的签出 我已经尝试了svnls-R,它确实会列出一些我没有签出的文件,但仍然有一些文件丢失了。我知道,因为它确实显示了当前目录中的所有内容。现在

我访问一个大型的远程SVN存储库。由于我通常只需要其内容的一小部分,所以我进行了“稀疏签出”:

每当我需要存储库中的文件夹时,我都可以这样做

svn up folder
当我不再需要它的时候,我用

svn up --set-depth exclude folder
但是现在我需要一个存储库中所有文件的完整列表,我不想为了得到文件名和文件夹名而进行完整的签出

我已经尝试了
svnls-R
,它确实会列出一些我没有签出的文件,但仍然有一些文件丢失了。我知道,因为它确实显示了当前目录中的所有内容。现在我可以半手动地为每个新找到的目录执行
svnls
svn up--depth empty
,但我想知道是否有更好的替代方法

与此相反,我只对存储库的当前内容感兴趣,并且没有访问
svnadmin
。我也不能在存储库服务器上安装软件

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

我认为这适用于当前和所有子目录。这张表还列出了所有的分支和标记,以及它们的所有子目录和文件。

这张表以递归方式列出了所有文件:

svn ls -R URL-OF-REPO
您可以试试我的实用程序,它比“svn列表--递归”更好

没有URL


svn list--recursive-r HEAD

如果您想获得所有文件而不是文件夹的完整列表,可以像这样使用管道svn list和grep命令:

svn list -R svn://url/to/your/main/folder/on/repo | grep '[^\/]$'
所列文件夹的路径

svn列表-Rsvn://url/to/your/main/folder/on/repo

始终以“/”结尾,而文件路径不以“/”结尾。输出作为输入传递给

grep“[^\/]$”

它排除了所有具有尾随“/”的路径;其余路径仅与文件相关

示例:假设我们在my.svnserver.com上有一个名为myrepo的存储库作为域,我们希望获得myrepo子目录中列出的所有文件,即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

谢谢显式地使用repo URL就做到了这一点。是的,
-R
可以使用。感谢您构建此功能!快速构建说明:在CentOS 6 box上,我不得不修改CMakeLists.txt文件,将“include/apr-1.0”更改为“include/apr-1.0”。是否有一种方法也包括文件大小?不,文件大小检索需要对每个文件单独请求;这将大大降低公用事业的发展速度。它可以方便地[另外]只打印“上次更改的版本”、“上次更改的日期”和“上次更改的作者”(此信息位于svn:entry:*相同请求中收到的属性中)。
svn list -R svn://my.svnserver.com/myrepo/mysubdir | grep '[^\/]$'
svn list -R svn://my.svnserver.com/myrepo/mysubdir | grep '[^\/]$' | wc -l