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

时间:2013-02-01 12:55:07

标签: svn repository remote-access

我访问大型远程SVN存储库。由于我通常只需要其内容的一小部分,我做了“稀疏结账”:

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

每当我需要存储库中的文件夹时,我就可以

svn up folder

当我不再需要它时,我会使用

svn up --set-depth exclude folder

但现在我需要存储库中所有文件的完整列表,我不想只是为了获取文件和文件夹名称而进行完整的检查。

我已经尝试了svn ls -R,它确实会列出一些我没有检查过的文件,但仍然有一些遗漏。我知道,因为它确实显示当前目录中的所有内容。现在我可以为每个新发现的目录半手动执行svn lssvn up --depth empty,但我想知道是否有更好的替代方案。

How do I list all files ever committed to the repository?相比,我只对存储库的当前内容感兴趣,而且我无法访问svnadmin。我也不能在存储库服务器上安装软件。

5 个答案:

答案 0 :(得分:53)

以递归方式列出所有文件:

svn ls -R URL-OF-REPO

答案 1 :(得分:8)

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

我认为这适用于我尝试过的当前和所有子目录。这个列出了所有分支和标签,以及它们的所有子目录和文件。

答案 2 :(得分:6)

您可以尝试我的实用程序fast-svn-crawler,它是much faster而不是“svn list --recursive”。

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

答案 3 :(得分:1)

没有网址

svn list --recursive -r HEAD

答案 4 :(得分:0)

如果您想获得所有文件而不是文件夹的完整列表,可以像这样输入 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 <​​/ em>命令(打印换行符的数量,因为每个输出行只包含一个路径),您可以获取所有文件的数量 mysubdir ,像这样

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