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

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

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

...,我最终可能会得到一个XML文件,该文件是如此之大,以至于需要很长时间才能下载,需要很长时间才能解析和需要大量资源以及需要很长时间来存储。

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

svn log -r <revision> ...

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

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


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


这样,我将能够为存储库路径创建有效修订的数组,并一一获取。

欢迎所有建议,在此先感谢。

最佳答案

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

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

关于svn - SVN:是否可以获取给定路径的修订号列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1633649/

10-13 07:37