# svn co svn://192.168.60.10/project
Authentication realm: 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for 'root':
Authentication realm: 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: server_group
Password for 'server_group':
svn: Authorization failed ( server_group没用根目录的访问权 )
# svn co svn://192.168.60.10/project
Authentication realm: 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for ‘root’:
Authentication realm: 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: pm
Password for ‘pm’:
A project/test
A project/server
A project/client
Checked out revision 1. ( 测试提取成功 )
# cd project/server
# vim main.c
# svn add main.c
# svn commit main.c -m “测试一下我的C程序,看什么看,不行啊??”
Adding main.c
Transmitting file data .
Committed revision 2. ( 测试提交成功 ) 三,配置SVN服务器的HTTP支持
1,转换SVN服务器的密码
由于SVN服务器的密码是明文的,HTTP服务器不与支持
所以需要转换成HTTP支持的格式。我写了一个Perl脚本完成这个工作
脚本内容如下:
# cd /home/svn/project/conf/
# vim PtoWP.pl
#!/usr/bin/perl # write by huabo, 2009-11-20
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
# ./PtoWP.pl
Adding password for user pm
Adding password for user server_group
Adding password for user client_group
Adding password for user test_group
现在目录下会多一个webpasswd文件。
2,修改httpd.conf,添加关于SVN服务器的内容
编辑/etc/httpd/conf/httpd.conf,在最后添加如下信息:
DAV svn
SVNPath /home/svn/project/
AuthType Basic
AuthName "svn for project"
AuthUserFile /home/svn/project/conf/webpasswd
AuthzSVNAccessFile /home/svn/project/conf/authz
Satisfy all
Require valid-user
# wget http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Module-Build-0.36_11.tar.gz
# tar xvf Module-Build-0.36_11.tar.gz
# cd Module-Build-0.36_11
# perl Build.PL
# ./Build
# ./Build test
# ./Build install
# cd ..
2,安装Perl模块Authen::SASL
# wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/Authen-SASL-2.15.tar.gz
# tar xvf Authen-SASL-2.15.tar.gz
# cd Authen-SASL-2.15
# perl Makefile.PL
# make test
# make install
# cd ..
3,安装Perl模块Net::SMTP_auth
# wget http://search.cpan.org/CPAN/authors/id/A/AP/APLEINER/Net-SMTP_auth-0.08.tar.gz
# tar xvf Net-SMTP_auth-0.08.tar.gz
# cd Net-SMTP_auth-0.08
# perl Makefile.PL
# make test
# make install
# cd ..
4,安装Perl模块SVN::Notify
# wget http://search.cpan.org/CPAN/authors/id/D/DW/DWHEELER/SVN-Notify-2.80.tar.gz
# tar xvf SVN-Notify-2.80.tar.gz
# cd SVN-Notify-2.80
# perl Build.PL
# ./Build
# ./Build test
# ./Build install
# cd ..
5,启动邮件服务器
# service sendmail restart
Shutting down sendmail: [FAILED]
Starting sendmail: [ OK ]
Starting sm-client: [ OK ]
6,配置自动发邮件脚本
修改post-commit脚本,以支持邮件通知功能.
# cd /home/svn/project/hooks/
# vim post-commit
内容如下:
五,其它常用配置
1,强制写log脚本
配置pre-commit文件,要求用户每次更新文件都必须写log.
# cd /home/svn/project/hooks/
# vim pre-commit
文件内容如下:
#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 5(要求的log长度,依实际需要修改) ];
then
echo -e "\nEmpty log message not allowed. Commit aborted!" 1>&2
exit 1
fi
配置完成后,给本件加上可执行权限。再提交代码时,就必须按要求写注释了,:)
2,可修改log脚本
配置pre-revprop-change文件,此文件在show log中修改log时会运行,得到修改的权限,否则会报错:DAV request failed; it’s possible that the repository’s pre-revprop-change hook either failed or is non-existent. At least one property change failed; repository is unchanged
# cd /home/svn/project/hooks/
# vim pre-revprop-change
文件内容如下:
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
if ["$PROPNAME" = "svn:log"];then exit 0;fi
exit 1
配置完后加可执行权限升效。 六,备份管理
svn服务器的定期备份是很重要的,最简单的方式是定时备份仓库目录
1,新建备份目录
# mkdir /opt/project_backup
2,编写备份脚本
# cd /home/svn/
# vim project_backup.sh
内容如下:
#!/bin/bash
#write by huabo, 2009-11-20
cd /home/svn
now=`/bin/date +%Y%m%d`
/bin/tar czvf “project_backup_$now.tar.gz” project/ && rm -rf /opt/project_backup/* && /bin/mv project_backup_*.tar.gz /opt/project_backup/
if [ $? == 0 ]
then
result=”OK!!”
else
result=”False!!”
fi
#send mail to administrator
/bin/mail caodaijun@pica.com -s “project_backup_$now” FLUSH PRIVILEGES;
quit
4.配置codestriker
# cd codestriker-1.9.10/
# vim codestriker.conf
注意以下几点(详细可查看codestriker的安装文档)
a.数据库的用户名密码要配对
b.svn的数据仓库要配对,我的如下:
@valid_repositories =
(
‘svn:file:///home/svn/project’,
)
5.执行codestriker的安装脚本
# cd bin/
# ./install.pl
6.配置http支持
# vim /etc/httpd/conf/httpd.conf
在最后面加上如下内容:
Alias /codestriker/ /var/www/codestriker/codestriker-1.9.10/cgi-bin/
Alias /codestrikerhtml/ /var/www/codestriker/codestriker-1.9.10/html/