说明:基于linux平台的svn有diff的功能,但是字符界面的diff可读性太差,于是乎想升级一下diff的功能,正好搭建了bugfreeforsvn,里面的建议是用ViewVC,这个软件应该是个不错的选择,OK,不用想那么多了,let's go......


怎么做?

1、由于需要和svn整合,那么之前搭建的SVN需要重新编译安装。

2、viewvc是用python写的,为了支持python,需要将svn和python整合起来。

3、安装swig,用来将Python和c/c++对接起来,如果你想了解更多,请查看:http://blog.sina.com.cn/s/blog_677257e40100l3bi.html


准备:

  • Python-2.7.6.tgz

  • swig-1.3.24.tar.gz

  • viewvc-1.1.21.tar.gz

  • subversion-1.6.18.tar.gz

  • subversion-deps-1.6.18.tar.gz

  • 操作系统:RHEL x86_64 AS 4.6


下面2个软件的版本单独说明一下:这2个软件的版本很重要,因为操作系统版本太老4.6的,其他软件如swig,python都不能用最新的,经过测试必须用某一时间段的版本才能完美整合,下面2个软件也是如此。

  • neon-0.29.6.tar.gz  serf-0.3.0.tar.bz2


一 搭建SVN

  请参见我之前的博文 http://bblxlit.blog.51cto.com/151710/1338493


二 重新编译安装SVN

1、将/usr/local/subversion这个文件夹备份一下

mv /usr/local/subversion /usr/local/subversion.bak

2、安装python

  由于viewVC使用python写的,而系统自带的版本太低,因此安装该版本。

tar xvzf Python-2.7.6.tgz
cd Python-2.7.6
./configure --prefix=/usr/local/python2
make && make install

3、安装swig

tar xzvf swig-1.3.24.tar.gz
cd SWIG-1.3.24
./configure --prefix=/usr/local/swig \
--with-python=/usr/local/python2/bin/python
make && make install

4、安装svn

tar xzvf subversion-1.6.18.tar.gz
tar xzvf subversion-deps-1.6.18.tar.gz
tar xzvf neon-0.29.6.tar.gz
tar xzvf serf-0.3.0.tar.bz2
cd subversion-1.6.18
rm -rf apr apr-util neon serf
cp -ar ../neon-0.29.6 neon
cp -ar ../serf-0.3.0 serf
chown -R 1000:users neon serf
./configure \
--prefix=/usr/local/subversion \
--with-apxs=/usr/local/apache2/bin/apxs \
--with-ssl \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--with-zlib=/usr/lib64 \
--with-swig=/usr/local/swig/bin/swig \
--enable-shared \
--enable-static \
PYTHON=/usr/local/python2/bin/python
make && make install

5、配置SVN

  参见我之前的博文 http://bblxlit.blog.51cto.com/151710/1338493

6、绑定subversion

cd subversion-1.6.18
make swig-py
make check-swig-py           #有一个trac的报错,无须理会
make install-swig-py

7、添加svn的python binding安装路径到Python的path中

  由于是源码安装,svnpython-binging 不在python默认的搜索路径中,默认是/usr/local/lib/svn-python/,需要修改如下:

cd /usr/local/python2/lib/python2.7/site-packages
echo /usr/local/subversion/lib/svn-python > subversion.pth
echo /usr/local/subversion/lib >> /etc/ld.so.conf
ldconfig

8、测试svn模块

  首先要修改python的可执行文件路径,这是由于系统自带的python未删除。如果不修改,viewvc在调用python的时候默认使用系统自带的。如果你不嫌麻烦,那么请修改viewvc-1.1.21安装目录下的所有脚本文件,它们的路径都是以#!/usr/bin/python开头的。

cd /usr/bin
mv python python.bak
ln -s /usr/local/python2/bin/python python

执行如下命令测试:

# python
Python 2.7.6 (default, Nov 29 2013, 11:32:29)
[GCC 3.4.6 20060404 (Red Hat 3.4.6-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import svn.core

如果没有任何提示,就说明OK了。


三 安装配置ViewVC

1、安装ViewVC

tar xvzf viewvc-1.1.21.tar.gz
cd viewvc-1.1.21
./viewvc-install

2、配置apache

# vim  /usr/local/apache2/conf/httpd.conf
在306行添加:
    ScriptAlias /viewvc "/usr/local/viewvc-1.1.21/bin/cgi/viewvc.cgi"
    ScriptAlias /query "/usr/local/viewvc-1.1.21/bin/cgi/query.cgi"
在330行添加:
<Directory "/usr/local/viewvc-1.1.21/bin/cgi">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
在最后添加:
<Location "/viewvc">
AuthType Basic
AuthName "ViewVC Client Access"
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL "ldap://192.168.1.226:389/dc=example,dc=com,dc=cn?uid?sub?(objectClass=*)"
Require valid-user
</Location>

3、重启apache

/usr/local/apache2/bin/apachectl restart

4、修改viewVC配置文件

  让viewvc启用svn的权限控制。

# vim /usr/local/viewvc-1.1.21/viewvc.conf
在如下section中添加:
[general]
root_parents = /home1/subversion/project: svn
因为我所有的库都在project目录下
[options]
authorizer = svnauthz
启用svn的认证
[authz-svnauthz]
authzfile = /home1/subversion/auth
认证文件的路径

5、访问viewvc

http://localhost/viewvc

配置完成。