WebSVN 是一个 SVN 仓库的 WEB 浏览工具,功能上类似于 GitWeb,只是 WebSVN 是针对 SVN 的。你可以使用 WebSVN 来预览文件和目录,以及对比文件或目录的各个版本之间的差异。

特点

  • 比较文件/文件夹版本的差异
  • 浏览/搜索版本和日志信息
  • 文件作者的责任视图
  • 自定义模板系统
  • 彩色化文件列表,支持 MIME 类型
  • 支持本地和远程仓库
  • 文件和文件夹下载
  • RSS订阅,支持查看任何资源
  • 多语言,即时切换

安装

  • 下载 WebSVN 最新版本 并解压至 Nginx 工作目录

    cd /usr/share/ginx/html
    wget http://websvn.tigris.org/files/documents/1380/49057/websvn-2.3.3.zip
    unzip websvn-2.3.3.zip
    

    这里用的是 Nginx 作为服务器,当然你也可以用 Apache 或其他来代替,确保服务器与 PHP 正常运行。

  • 添加仓库配置

    cp include/distconfig.php include/config.php
    vim include/config.php
    

    include/config.php 添加/修改下面配置

    $config->addRepository('FirServer', 'http://192.168.181.12/FirServer', null, 'shenyu', '123456');
    $config->addRepositorySubpath('FirServer-Rose', 'http://192.168.181.12/FirServer', 'branches/branche_rose', null, 'shenyu', '123456');
    

    这里配置了两种不用类型的仓库,一种是直接使用仓库的根目录(addRepository),另一种是使用仓库的子目录(addRepositorySubpath),切勿直接将仓库子目录用 addRepository 方式来配置,这样会导致使用 WebSVN 时出现相对目录不正确的问题。

Bug

使用的时候发现 View Log 的时候,表格里 Path 栏链接点击后会出错,看了一下源码,应该是相对路径的问题,找到下面这行代码

$url = $config->getURL($rep, $precisePath, ($isDir ? 'dir' : 'file')).$thisRevString;

将其改成

if($rep->subpath) {
    $precisePath = substr($precisePath, strlen($rep->subpath) + 1);
}
$url = $config->getURL($rep, $precisePath, 'dir').$thisRevString;

WebSVN 最新的版本发布于2011年,许久未更新了,出现这个问题也许可能是 SVN 命令行客户端版本更新造成的,现有的 Mac 上比较好用的 SVN 客户端要数 CornerStone 了,不过收费,而且还挺贵的。

参考资料