Windows 2003+IIS6下安装ViewVC for Subversion的苦难历程

前几天好奇,也刚好得了点空闲,然后就想看看ViewVC对Subversion的支持程度,于是就想装个玩玩。好死不死的,在我的VMWare Workstation上刚好有个Windows Server 2003,心想,就它吧,可就这么一偷懒,折腾了我好几天,最终还是只能算将就着把它给装上了。

安装环境:Windows Server 2003, IIS 6, Suberversion 1.3.0, ViewVC 1.0-Dev

安装步骤:

一、首先安装Subversion,按照Mere-Moments Guide to installing a Subversion server on Windows的介绍自然应该是很容易就搞定安装和简单配置的,然后往仓库中添加几个文件,然后做点更新,以便从ViewVC中能看到点东西;

二、安装ViewVC
1. 既然装了Subversion,那就学以致用,直接从http://viewvc.tigris.org/svn/viewvc/trunk/检出个最新的版本下来就行,或者到http://www.viewvc.org/nightly/下载个打包的版本;
2. 如果你有阅读Readme的习惯,那恭喜你,基本上完成基本的安装配置是没有问题啦;当然,你一定要看完整个REQUIREMENTS这一节再决定下载安装Python的什么版本,很不幸,Subervsion现在提供的Python包(Python bindings)只支持Pythong 2.3,所以,如果你一开始下载安装的是Python 2.4,就得重新下载安装了:):
Subversion Python Bindings: http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91
Python 2.3: http://www.python.org/ftp/python/2.3.5/Python-2.3.5.exe
pywin32: http://prdownloads.sourceforge.net/pywin32/pywin32-208.win32-py2.2.exe?download
3. 安装好这些后,将Python的安装目录添加到系统路径中;
4. 在刚才下载的ViewVC目录下执行:python viewvc-install,第一个提示后指定ViewVC的安装目录,第二个提示直接回车就行。

三、ViewVC基本配置
由于ViewVC自带服务程序,因此,最好是先启动ViewVC服务程序,如果ViewVC自己运行正常的话,那就不用考虑ViewVC的配置问题了,想当初俺就没有充分利用这一点,而在IIS和ViewVC之间反复修改参数,都不知道是怎么死的。
1. ViewVC最简单配置
打开viewvc.conf,修改下面几行:
将cvs_roots = cvs: /home/cvsroot注释掉;
#svn_roots = svn: /home/svnrepos 改成类似于 svn_roots = mytest: C:/svn_repos/mytest,其中mytest是你指定的仓库名,冒号后面跟的是仓库所在的路径;
default_root = cvs注释掉,这样你至少可以看到仓库列表。
2. 双击ViewVC/bin下的standalone.py,就可以启动ViewVC自带的Web服务,然后在IE中输入http://localhost:7467/viewvc就应该可以看到仓库列表了,到这一步为止,我没有碰到什么障碍,所以,没什么可以提示的了;
3. 点击任何一个仓库,就应该可以看到仓库中的目录或文件了,但是,如果你在IE中看到如下的提示:
ImportError: No module named svn 那说明你没有安装Subversion的Python包,或者将其放到了Subversion的目录下了;
'module' object has no attribute 'SubversionRepository' 那说明你将Subversion的Python包复制到了viewvc的vclib下,并且覆盖掉了viewvc自己的文件;那么,要怎样安装这个包呢,ok,将其复制到ViewVC或者Python的lib目录下吧,唉,当初整这个也费了我不少周折,惭愧,谁叫我是个Python盲呢:(

四、安装diff和enscript工具
就这样看看,也已经比Subversion自带的Web界面好很多了,当然我们还应该挖掘ViewVC另外两个基本功能:比较和语法高亮显示,这样才显得专业嘛。
1. 到http://gnuwin32.sourceforge.net逐一下载以下工具:DiffUtils, enscript, libintl, libiconv, sed将其一股脑全部安装好,将其bin目录添加到系统路径中;
2.打开viewvc.conf,将use_enscript =0改成1,重新启动standalone.py;
3. 然后你就可以比较任意两个版本的差别了;
4. 不过,当你要浏览某个文件时,你会看到一个提示,说:libintl-2.dll或libiconv-2.dll之类的找不到,啊,先在ViewVC自带的Web服务下运行是多么的明智啊,如果你直接在IIS中调试,可就看不到这个提示了,这又是我N天的代价:(;
5. 为什么会这样呢,不是安装了Readme中提到的所有gnuwin32的包吗?不过,你是不是象我一样下的都是最新的版本呢?记得enscript的版本吗?这个可是个老古董,2003年推出的,而其它的基本上是05年、06年的,不兼容啊!安全起见,当然是安装与enscript同时代的包啦,当然,我将gnuwin32/bin目录下的libiconv2.dll和libintl3.dll直接复制一份,改名成libintl-2.dll和libiconv-2.dll竟然也ok,看来,老外们仅仅是在文件名上没有向后兼容,函数名还是基本上一致的,所以动态链接有动态链接的好处,而静态链接也不失为一个取巧的办法啊;

行文至此,ViewVC及相应工具的安装告一段落,不要再去考虑ViewVC的安装配置问题了,ViewVC的Readme也可以关掉了。接下来就是要在IIS上配置了。

五、IIS6设置
1. 创建一个虚拟目录viewvc,直接指向ViewVC/bin/cgi就可以了,在虚拟目录访问权限步骤勾选执行权限,如下所示;
Windows 2003+IIS6下安装ViewVC for Subversion的苦难历程
2. 在刚创建的虚拟目录上点击右键,选择属性,点击配置按钮,在应用程序配置对话框中点击添加,填写如下所示的内容;
Windows 2003+IIS6下安装ViewVC for Subversion的苦难历程
3. 切换到文档页,将viewvc.cgi设置为默认内容文档。
Windows 2003+IIS6下安装ViewVC for Subversion的苦难历程
在Windows 2000下,到这里就可以了;但是在2003下,还要做下面两步。

4.点击Web服务扩展,理论上应该添加一个新的Web服务扩展,然后仅允许这个服务,但我没有弄出来,所以,直接就允许所有未知cgi了,这也是我一开始说将就着用来着。到这里,基本上可以运行ViewVC了,但做比较和语法高亮显示有问题,如果你想试试,还得先重启一下机器,这也是让我花了N天的代价的地方,如果你真按ViewVC的Readme中的Troubleshooting的建议左改右改的话,估计最后还是无计可施。当然,在它的Troubleshooting最后有个表,其中有一项提到如果修改了系统变量的话,需要重启机器,我是重启完后才体会到这一点的:(;

5. 按默认设置创建一个新的应用程序池,在新建的应用程序池上点击右键,选择属性,选择标识,在预定义帐户中选择本地系统;然后再修改viewvc虚拟目录的属性,将应用程序池改为刚创建的应用程序池,重新启动机器。
Windows 2003+IIS6下安装ViewVC for Subversion的苦难历程Windows 2003+IIS6下安装ViewVC for Subversion的苦难历程
到这里,基本完成ViewVC在IIS6上的安装,其中辛酸自知啊!

六、不足
1. ViewVC for Subversion不提供类似CVSGraph的图形化版本树功能;
2. 如果提交的日志中有中文,将显示乱码,需要手工设置浏览器编码,或者修改ViewVC的模版templates/include/header.ezt,在紧挨着<head>的下方添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,因为Subversion使用的是utf-8编码;
3. 如果你的源代码中有中文,则日志和源代码不能两全,其中必有一个是乱码,难不成你源代码也用utf-8编码?如果你会Python,则建议修改一下ViewVC代码,将日志先由utf-8转换成gb2312,据说小海龟就是这么做的。

你可能感兴趣的:(subversion)