如何列出远程 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 lssvn 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 listgrep 命令:

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 的存储库作为域,并且我们想要获取在子目录中列出的所有文件myrepomysubdir:命令是

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 存储库中的所有文件?的主要内容,如果未能解决你的问题,请参考以下文章

当我在存储库中丢失一些修订时,如何转储所有 svn 数据?

如何从远程存储库中取消提交所有文件

如何列出存储库中的所有提交及其父信息以及使用命令行或 JGit 添加和删除的行?

如何在 git 存储库中列出我当前的所有 TODO 消息?

如何仅删除远程存储库中的文件? [复制]

Linux如何列出svn一个文件夹下的所有文件