【问题标题】:How to list all files in a remote SVN repository?如何列出远程 SVN 存储库中的所有文件?
【发布时间】: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。我也不能在存储库服务器上安装软件。

【问题讨论】:

    标签: svn repository remote-access


    【解决方案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
        

        【讨论】:

          猜你喜欢
          • 2013-04-25
          • 1970-01-01
          • 1970-01-01
          • 2011-01-19
          • 2018-07-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多