源码编译 svn-1.8
# ./configure --with-apxs=/usr/local/apache2/bin/apxs --enable-mod-activation
安装完成subversion后,使用svn获取http或https上资源时报错:
# svn co
svn: E170000: Unrecognized URL scheme for ''
解决办法:
在安装subversion之前没有先安装serf。当安装了serf后重新编译subversion即可。
配置Apache:
# vi /usr/local/apache2/conf/httpd.conf
查找文件中是否增加了
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
两行信息,并且查看/usr/local/apache2/modules 下是否有mod_dav_svn.so 和 mod_authz_svn.so 文件
如果http.conf 中没有增加代码。modules 下有mod_dav_svn.so 和mod_authz_svn.so 文件,在http.conf中增加那两行代码:
DAV svn
# svn库的根目录
SVNParentPath /data/svn/repos/gps
AuthType Basic
# 浏览器登陆时的提示信息
AuthName "GPS repo"
# 用户的密码信息
AuthUserFile /data/svn/repos/gps/conf/webpasswd
# 指向svn库的conf目录下authz
AuthzSVNAccessFile /data/svn/repos/gps/conf/authz
# 告诉apache在authfile中所有的用户都可以访问。如果没有它,则只能第一个用户可以访问新建库
Require valid-user
SVN版本库操作:
1. 创建版本库(注意:如果这里不写--pre-1.6-compatible,更新svn的时候会报post commit FS processing had error: Couldn’t open rep-cache database)
# svnadmin create --pre-1.6-compatible /data/svn/
repos/gps
2. passwd 文件,该文件用来给svnserve独立进程使用
在/data/svn/
repos/gps/conf/下生成passwd文件,用户名为hello,密码为hello123
3. webpasswd文件,有后面 pl 脚本生成,作为apache svn校验用户使用
4. 编辑用户权限文件 authz, 在编辑authz时,所有行都必须要顶头写,不能有缩进,否则报错
权限具备继承性 任何子目录,均可继承其父目录的所有权限,除非它自己被明确设置了其他的权限
# vi /data/svn/
repos/gps/conf/authz
[groups] --表示群组设置
admin = hello --表示admin群组里的成员有hello,如果要配置多个,用逗号分隔
develop = hello2 --表示develop群组里的成员有hello2,如果要配置多个,用逗号分隔
[gps:/] --表示仓库gps的根目录下的访问权限
hello = rw --poc仓库hello用户具有读和写权限
hello2 = r --poc仓库hello2用户具有只读权限
@admin = rw --表示群admin的成员都具有读写权限
@develop = r --表示群poc的成员都具有只读权限
# gps 仓库下的项目 proj1 对 hello2 开放读写权限
[gps:/proj1]
hello2 = rw
[/] --表示在所有仓库的根目录下
* = r --表示对所有的用户都具有读权限
创建脚本对passwd文件生成apache用户认证的加密文件webpasswd
# vim /usr/svn/repo/conf/PtoWP.pl
#!/usr/bin/perl
use warnings;
use strict;
#open the svn passwd file
open (FILE, "passwd") or die ("Cannot open the passwd file!!!\n");
#clear the apache passwd file
open (OUT_FILE, ">webpasswd") or die ("Cannot open the webpasswd file!!!\n");
close (OUT_FILE);
#begin
foreach () {
if($_ =~ m/^[^#].*=/) {
$_ =~ s/=//;
`htpasswd -b webpasswd $_`;
}
}
# chmod +x PtoWP.pl
启动脚本:
# vi mysvn.sh
#!/bin/bash
# chkconfig: 35 70 30
# description: It is used to serve
SVN_HOME=/usr/local/bin
SVN_USER=svn
if [ ! -f "$SVN_HOME/svnserve" ]
then
echo "svnserver startup: cannot start"
exit
fi
case "$1" in
'start')
echo "Starting svnserve..."
$SVN_HOME/svnserve -d -r /data/svn/repos --log-file /data/svn/svn.log
echo "Finished!"
;;
'stop')
echo "Stoping svnserve..."
killall svnserve
echo "Finished!"
;;
'restart')
$0 stop
$0 start
;;
*)
echo "Usage: svn { start | stop | restart } "
exit 1
esac
若是多个仓库,则可以将多仓库的父目录 /data/svn/repos 作为启动脚本中 -r 所指定的路径。
*******************************************************************************
eclipse 安装 svn 插件后,若出现 JavaHL(JNI) Not available 错误:
yum install svnkit-javahl
现在/usr/lib64/目录下有一个libsvnjavahl-1.so文件存在,若还不行,可修改eclipse.ini文件,添加下面的option
-Djava.library.path=/lib:/usr/lib:/usr/lib64
实验下来,该 libsvnjavahl-1.so 在 eclipse 中对处理汉字有问题,还是使用 SVNKit(Pure Java)比较好.
*******************************************************************************
yum install rabbitvcs-*
yum install python-simplejson
这样 nautils 和 thunar 都集成到了右键菜单中。
*******************************************************************************
阅读(1929) | 评论(0) | 转发(0) |