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

Oli*_*vic 14 svn revision subdirectory

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

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

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

...我最终可能会得到一个XML文件,这个文件非常庞大,需要很长时间才能下载,需要很长时间和大量资源才能解析,并且需要很长时间才能存储.

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

svn log -r <revision> ...

但是,由于我不知道给定路径存在哪些具体修订,我将收到错误.我可以让应用程序在更新期间忽略该错误,但它是一个讨厌的黑客,它会发布请求并等待响应 - 无论如何都不好.

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

  • "给我这条路径的修订号列表",或者:
  • "给我这条路径的修订号列表,在和之间

这样我就可以为存储库路径创建一系列有效的修订版本并逐个获取它们.

欢迎提出所有建议,谢谢.

Mik*_*tar 10

我认为最好的办法是执行以下操作svn log -l 100 0:{$newest} .\,检索给定目录或文件的前100个日志.然后读取返回的最后一个修订号,然后请求下一个100svn log -l 100 {$last_ret_log}:{$newest} .\

这样,每次请求都会获得99个新的日志条目,但是你不会得到所有这些条目.


Jay*_*ayd 5

我只是想得到类似的结果。我只想要特定分支的所有修订号。

我发现以下内容非常有帮助。

svn log <svn_server_path> | grep "^r[0-9]\+ | " | cut -d' ' -f1 | cut -c2- > revisions.csv
Run Code Online (Sandbox Code Playgroud)

这给了我一个文件,其中所有修订号都在不同的行上。

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

我们的存储库有超过 25000 个修订,生成此文件需要几秒钟的时间。