代码之家  ›  专栏  ›  技术社区  ›  Oliver Maksimovic

SVN:是否可以获取给定路径的修订号列表?

  •  14
  • Oliver Maksimovic  · 技术社区  · 16 年前

    我正在制作一个连接到存储库的PHP工具,下载提交列表并将其存储在本地。但是,由于某些存储库可能很大,并且获取它们的日志会导致等待时间长和可能的超时/错误,所以我希望使用异步请求下载每个提交消息。

    所以,我在修订历史中有一个起点和终点,我可以像这样抓取所有日志:

    svn log -r <from_revision>:<to_revision> <REPO_URL>

    …最后我可能会得到一个XML文件,它太大了,下载需要很长时间,解析需要很长时间和大量资源,存储也需要很长时间。

    如果我知道起始点和结束点,我可以创建for()循环来逐个获取修订:

    svn log -r <revision> ...

    但是,由于我不知道给定路径存在哪些特定的修订,我将收到一个错误。我可以让应用程序在更新过程中忽略这个错误,但这是一个令人讨厌的黑客,它会发布请求并等待响应——这一点都不好。

    所以,我需要这样的东西:

    • “提供此路径的修订号列表”,或:
    • “给我这个路径的修订号列表,介于和之间

    这样,我就可以为存储库路径创建一个有效的修订数组,并逐个获取它们。

    欢迎提出所有建议,提前谢谢。

    5 回复  |  直到 9 年前
        1
  •  10
  •   Noctis    10 年前

    我想你最好的选择是 svn log -l 100 0:{$newest} .\ 这将检索给定目录或文件的前100个日志。然后读取返回的最后一个版本号,然后请求下一个100 svn log -l 100 {$last_ret_log}:{$newest} .\

    这样,每个请求都会有99个新的日志条目,但不会全部得到。

        2
  •  4
  •   Sir Rippov the Maple    16 年前

    如果您有权访问Subversion服务器上的存储库树,则可以使用 svnlook history 获取修订号列表。

    有关更多详细信息,请访问 http://svnbook.red-bean.com/en/1.1/re49.html .

        3
  •  4
  •   Jayd    9 年前

    我只是想得到一个类似的结果。 我只想知道某个分支的所有修订号。

    我发现以下内容很有帮助。

    svn log <svn_server_path> | grep "^r[0-9]\+ | " | cut -d' ' -f1 | cut -c2- > revisions.csv
    

    这给了我一个文件,所有修订号都在单独的行上。

    希望你或其他人会发现它有帮助。

    我们的repo有超过25000个版本,生成这个文件需要几秒钟的时间。

        4
  •  2
  •   choudeshell    16 年前

    你可能想看看 svn list . 所以为了你的目的:


    $ svn list --verbose file:///var/svn/repos
         16 sally         28361 Jan 16 23:18 README.txt
         27 sally             0 Jan 18 15:27 INSTALL
         24 harry               Jan 18 11:27 examples/
    

    这列出了任何文件的最后一次(头部)修订。

        5
  •  1
  •   phil    13 年前
    svn log url -l limitNumber - r fromReversion:toReversion
    

    如果你想找到下一个更老(更小)的回复(版本) 例如

       svn log url -l 4 -r someVersion:1
     or
       svn log url -l 4 -r 99: 3
    

    从逆转大于扭转 如果你想找到下一个更新(更大)的版本

      svn log url -l 4 -r someVersion:head
    or   
      svn log url -l 4 -r 3:99
       fromReversion lower than toReversion