如何实现像Google Code Hosting这样的/ svn-history / path呢?

时间:2009-03-26 18:01:49

标签: svn http

当您通过Apache Httpd发布Subversion存储库时,您将获得一个额外的功能:您可以使用任何HTTP客户端浏览源代码的HEAD修订版。

例如,我们有这个存储库:

http://trash-cli.googlecode.com/svn/trunk/

使用任何HTTP客户端(例如Firefox),您可以在HEAD修订版中浏览文件。 svnbook非常清楚地说明了这一点。

但Google Code Hosting提供了额外的功能:您还可以浏览过去的修订版。例如,您可以浏览r10版本:

http://trash-cli.googlecode.com/svn-history/r10/trunk/

你知道谷歌是怎么做到的吗?我也希望在我的公司存储库中使用此功能! :)

由于

更新1

以下行为可能有助于我们解决问题。如果我访问存储库中不存在的路径,例如

http://trash-cli.googlecode.com/svn-history/r10/non-existent

我收到了以下404错误:

  

未找到

     

请求的网址   / svn /!svn / bc / 10 /不存在不是   在这台服务器上找到。

我怀疑场景下有一个URL重写规则。

更新2

请注意,这与this question不同。我希望以一种Google代码所做的方式让用户感觉舒适的方式在我的公司存储库中公开这个服务,我对如何在没有此功能的外部存储库中获得旧版本感兴趣。我使用的是服务提供者的视角,而不是用户的视角。我希望让同事们的生活更轻松。

4 个答案:

答案 0 :(得分:13)

来自subversion 1.6 release notes

  

mod_dav_svn(服务器)的新公共'历史'HTTP URI语法

     

mod_dav_svn现在支持新公众   用于检查旧版本的URI语法   文件或目录的版本。该   这里的意图是允许用户   在不使用的情况下检查历史   svn客户端,并使其更容易   第三方工具(例如代码审查   服务)直接反对   不使用svn的存储库   库。

     

http://host/repos/path?[p=PEG][&r=REV]

答案 1 :(得分:0)

我认为基本安装(来自SubVersion团队)没有开箱即用的此功能。我相信人们已经在Subversion客户端上或与Subversion客户端一起构建扩展或程序以获得该功能。

如果您运行存储库,则可以安装WebSVN(http://websvn.tigris.org/)以获得所需内容。还有其他选择,我敢肯定。

答案 2 :(得分:0)

将类似内容添加到您的存储库网址:

!svn/bc/<revision_number>/

E.g。

http://www.example.com/svnrepository/!svn/bc/3/

重复: How do I browse an old revision of a Subversion repository through the web view?

答案 3 :(得分:0)

我研究过the Apache docs,我认为可以在httpd.conf中使用此规则来解决。

RewriteRule ^/svn-history/r([0-9]+)/(.*) /svn/!svn/bc/$1/$2

我还没有测试过。我稍后会测试它。