Thursday, March 8, 2007

viewvc 搭建笔记

关于svn+apache2的工作环境搭建,请参考我的这一篇笔记

这是一篇关于如何搭建viewvc来更好的通过WEB展示svn记录的笔记。

工作环境为RedHat EL4
Linux MYSERVER 2.6.9-5.ELsmp #1 SMP Wed Jan 5 19:30:39 EST 2005 i686 i686 i386 GNU/Linux

首先,viewvc同时支持CVS和Subversion,最开始是为CVS系统开发,不过由于SVN系统近来的流行,viewvc也开始支持svn系统了。

  1. 下载viewvc
    $ wget http://www.viewvc.org/nightly/viewvc-1.1-dev-20070307.tar.gz

  2. 安装viewvc
    $ ./viewvc-install

  3. 编辑viewvc配置文件 viewvc.conf
    root_parents = /home/userhome/zztest/svn_dir : svn,
    # /home/cvs-repositories : cvs

    同时你还可以在 viewvc.conf 中找到一些可选配置,比如PHP语法高亮等。

  4. 在 Apache 的配置文件中加入viewvc配置,并加如HTTP验证功能
    Alias /webview /usr/local/viewvc-dev/bin/cgi/

    DirectoryIndex viewvc.cgi
    AddHandler cgi-script .cgi
    Options ExecCGI FollowSymLinks
    AllowOverride None
    AuthType Basic
    AuthName "Subversion repository"
    AuthUserFile /usr/local/viewvc-dev/viewpasswd.conf
    Require valid-user
    Order allow,deny
    Allow from all

  5. 这时当你在WEB上查看viewvc时,可能会提示
    viewvcImportError: No module named svn
    这是因为 python 还需要一个和你工作的svn系统进行联系的库,在svn的原代码中可以进行编译并安装,前提是需要安装 swig 这个软件包,还好在大多数LINUX发行版中,这个软件包是默认安装的。你可以用
    $ which swig
    这样的命令来验证,如果没有安装上,可以安装一个。接下来你可能需要通过这样的方式,重新编译并安装svn软件包
    $ ./configure --codefix=/usr/local --with-apxs=/usr/local/bin/apxs --with-berkeley-db=/usr/local PYTHON=/usr/local/bin/python2.5
    $ make
    $ sudo make install
    $ make swig-py
    $ make install-swig-py

    现在你的viewvc就可以正常工作了。

  6. 最后你还可以对viewvc安装目录中的 python 代码和 template 模板文件进行修改来满足你的需求。




UPDATE 在编译的时候,使用VIEWVC可能会遇到象这里描述的问题,不过这里有解决方法,可以参考 ;)

Indexing repository
Failed to initialize environment. /usr/local/lib/libsvn_ra_dav-1.so.0: undefined symbol: gss_delete_sec_context
Traceback (most recent call last):
File "/usr/lib/python2.3/site-packages/trac/scripts/admin.py", line 616, in do_initenv
repos = self.__env.get_repository()
File "/usr/lib/python2.3/site-packages/trac/env.py", line 155, in get_repository
from trac.versioncontrol.svn_fs import SubversionRepository
File "/usr/lib/python2.3/site-packages/trac/versioncontrol/svn_fs.py", line 25, in ?
from svn import fs, repos, core, delta
File "/usr/local/lib/svn-python/svn/fs.py", line 19, in ?
from libsvn.fs import *
File "/usr/local/lib/svn-python/libsvn/fs.py", line 5, in ?
import _fs
ImportError: /usr/local/lib/libsvn_ra_dav-1.so.0: undefined symbol: gss_delete_sec_context


把 Makefile 的

SVN_APR_LIBS = /home/rob/build/subversion-1.4.2/apr/libapr-0.la -lrt -lm -lcrypt -lnsl -lpthread -ldl

改为

SVN_APR_LIBS = /home/rob/build/subversion-1.4.2/apr/libapr-0.la -lrt -lm -lcrypt -lnsl -lpthread -ldl -L/usr/kerberos/lib -lgssapi_krb5 -lkrb5 -lk5crypto

No comments:

Post a Comment