SVN:是否有可能得到修订号对于给定的路径列表?(SVN: Is it possible to ge

2019-09-01 18:05发布

我想提出一个PHP工具连接到存储库,下载提交的名单,并在本地存储它们。 然而,由于某些库是巨大的,抓在漫长的等待时间,并有可能超时/错误日志的结果的可能性,我想下载使用每一个异步请求的提交信息。

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

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

......我将可能与该是如此巨大,这将需要很长时间才能下载,很长一段时间和大量资源来解析,并长时间存储的XML文件中结束。

如果我知道的起点和终点,我可以创造一个为()循环由一个抢一个版本:

svn log -r <revision> ...

但是,因为我不知道是哪个具体的修订存在指定的路径,我会收到一个错误。 我可以忽略更新过程中错误的应用程序,但它是一个讨厌的黑客,其将发布请求,并等待反正响应 - 这是不好的。

所以,我需要这样的:

  • “给我的版本号的列表,这条道路”,OR:
  • “给我的版本号的列表,这条道路,之间

这样,我就能够进行有效修正的阵列存储库路径和一个让他们一个。

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

Answer 1:

我认为最好的方法是做以下svn log -l 100 0:{$newest} .\将恢复第100个日志对于给定的目录或文件。 然后读取最后一个版本号返回,然后请求下一个100 svn log -l 100 {$last_ret_log}:{$newest} .\

这样,你得到每个请求99个新的日志条目,但你不会得到所有的人。



Answer 2:

如果你有你的Subversion服务器上访问资源库树,那么你可以使用svnlook history来获得版本号的列表。

更多细节,可以发现http://svnbook.red-bean.com/en/1.1/re49.html 。



Answer 3:

我刚才一直试图获得类似的结果。 我只是希望所有的特定分支的版本号。

我发现下面是相当有帮助的。

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

这让我在不同的行中的所有版本号的文件。

希望你或别人会发现它的帮助。

我们的回购有超过25000的修订,它需要几秒钟生成此文件。



Answer 4:

你可能想看看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/

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



Answer 5:

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

fromReversion比toReversion更大当U想寻找下一个新的(大)回复(版本)

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


文章来源: SVN: Is it possible to get the list of revision numbers for given path?