如何列出远程 SVN 存储库中的所有文件?
Posted
技术标签:
【中文标题】如何列出远程 SVN 存储库中的所有文件?【英文标题】:How to list all files in a remote SVN repository? 【发布时间】:2013-01-16 19:04:38 【问题描述】:我访问了一个大型远程 SVN 存储库。由于我通常只需要其内容的一小部分,因此我进行了“稀疏结帐”:
svn checkout --depth empty svn+ssh://... src
每当我需要存储库中的文件夹时,我都可以这样做
svn up folder
当我不再需要它时,我会使用它
svn up --set-depth exclude folder
但现在我需要存储库中所有文件的完整列表,我不想为了获取文件和文件夹名称而进行完整的签出。
我已经尝试过svn ls -R
,它确实会列出一些我没有检出的文件,但仍然有一些文件丢失。我知道,因为它确实显示了当前目录中的所有内容。现在我可以为每个新找到的目录半手动执行svn ls
和svn up --depth empty
,但我想知道是否有更好的选择。
与How do I list all files ever committed to the repository? 相比,我只对存储库的当前内容感兴趣,我无权访问svnadmin
。我也不能在存储库服务器上安装软件。
【问题讨论】:
【参考方案1】:svn list --recursive https://myrespository.my.com/Myproject
我认为这适用于我尝试的当前和所有子目录。这个也列出了所有的分支和标签,以及它们的所有子目录和文件。
【讨论】:
【参考方案2】:这会递归地列出所有文件:
svn ls -R URL-OF-REPO
【讨论】:
谢谢!显式使用 repo URL 就可以了。是的,-R
可以使用。【参考方案3】:
你可以试试我的实用程序fast-svn-crawler,它是much faster而不是“svn list --recursive”。
$ svn-crawler https://myrespository.my.com/Myproject
【讨论】:
感谢您构建这个!快速构建说明:在 CentOS 6 机器上,我必须修改 CMakeLists.txt 文件以将“include/apr-1.0”更改为“include/apr-1”。 很棒的工具。有没有办法也包括文件大小? 不,文件大小检索需要对每个文件单独请求;这会大大降低实用程序的速度。它可以很容易地打印 [另外] 仅“最后更改的修订版”、“最后更改的日期”和“最后更改的作者”(此信息位于 svn:entry:* 同一请求中收到的属性中)。 【参考方案4】:没有网址
svn list --recursive -r HEAD
【讨论】:
【参考方案5】:如果你想得到所有文件而不是文件夹的完整列表,你可以像这样使用 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 '[^\/]$'
排除所有带有尾随 "/" 的路径;其余路径仅与文件相关。
示例:假设我们在 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
【讨论】:
以上是关于如何列出远程 SVN 存储库中的所有文件?的主要内容,如果未能解决你的问题,请参考以下文章