【问题标题】:How to implements the /svn-history/ path like Google Code Hosting does?如何像 Google Code Hosting 那样实现 /svn-history/ 路径?
【发布时间】:2010-10-15 18:32:37
【问题描述】:

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

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

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

使用任何 HTTP 客户端(例如 Firefox),您都可以浏览 HEAD 版本的文件。 svnbook 很好地解释了如何做到这一点。

但 Google 代码托管提供了一项额外功能:您还可以浏览过去的修订。例如,您可以浏览 r10 修订版:

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

您知道 Google 是如何做到这一点的吗?我也希望在我的公司存储库中使用此功能! :)

谢谢

更新 1

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

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

我收到以下 404 错误:

找不到

请求的网址 /svn/!svn/bc/10/non-existent 不是 在此服务器上找到。

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

更新 2

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

【问题讨论】:

标签: svn http


【解决方案1】:

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

如果您运行存储库,您可能可以安装 WebSVN (http://websvn.tigris.org/) 来获得您需要的东西。我敢肯定,还有其他选择。

【讨论】:

    【解决方案2】:

    将类似这样的内容添加到您的存储库 URL:

    !svn/bc/<revision_number>/
    

    例如

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

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

    【讨论】:

    • 你说得对,但这不是我的问题。我应该更清楚我在问什么。我更新了问题标题和描述,以使我的问题更清楚。
    • 感谢您的回答 - 它可能与 OPs 问题无关,但它帮助了我。
    【解决方案3】:

    我研究了the Apache docs,我认为可以使用httpd.conf中的这个规则来解决。

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

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

    【讨论】:

    • 看看我的回答...我在上一个问题中也回答了这个问题。你根本不需要任何重写。
    【解决方案4】:

    来自subversion 1.6 release notes

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

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

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

    【讨论】:

    • 哇!这似乎是我能找到的最干净的解决方案!唯一的问题是,目前我的 Fedora 上没有 subversion 1.6,我不知道是否有预构建的 RPM。不管怎么说,还是要谢谢你。 +1
    • CollabNet 提供了 svn rpm (collab.net/downloads/subversion/redhat.html) 但他们还没有打包 subversion 1.6。
    • 更新:现在好像已经打包好了。
    • 我没有听说过 peg 修订,但我在 the documentation 找到了它。
    猜你喜欢
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多