Svn服务器的安装部署+数据迁移+邮件自动通知
时间:2010-10-15 来源:yilongtech
Svn服务器的安装部署+数据迁移+邮件自动通知
1) svn安装
2) svn数据的迁移
3) svn配置邮件自动通知
一、svn安装
1. wget http://subversion.tigris.org/downloads/subversion-1.6.12.tar.gz
2. wget http://subversion.tigris.org/downloads/subversion-deps-1.6.12.tar.gz
3. wget http://www.sqlite.org/sqlite-3.7.0.tar.gz
4. tar zxvf sqlite-*.tar.gz
5. ./configure
6. Make &&make install
7. tar zxvf subversion-1.6.12.tar.gz
8. tar zxvf fubversion-deps-1.6.12.tar.gz
9. cd subversion-1.6.12
10. ./configure –prefix=/usr/local/svn1.6.12 –with-apxs=/opt/httpd2.15/bin/apxs
11. Make && make install
Tar xvf db-5.0.26.tar.tar
To do a standard UNIX build of Berkeley DB, change to the build_unix directory and then enter the following two commands:
../dist/configure
make
This will build the Berkeley DB library.
To install the Berkeley DB library, enter the following command:
make install
至此,subversion安装完成。
接下来创建仓库。
1. Mkdir /usr/local/svnroot
2. /usr/local/svn1.6.12/bin/svnadmin create /usr/local/svnroot/wlotx
3. 创建后需要改变一下svnroot下db和dav的权限。
# chmod 777 svnroot/db
# chmod 777 svnroot/dav
# chown -R apache:apache svnroot
4. 修改配置文件
4.1 修改authz文件
#############添加一个组#################
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
admin = test
#############给该组中所有用户授权#######
[/]
@admin=rw
:wq
4.2 修改passwd文件
[users]
# harry = harryssecret
# sally = sallyssecret
test=test
4.3 修改svnserve.conf文件
anon-access = none
auth-access = write
password-db = /usr/local/svnroot/wlotx/conf/passwd
authz-db = /usr/local/svnroot/wlotx/conf/authz
5. 启动svn
/usr/local/svn/bin/svnserve -d -r /usr/local/svnroot/wlotx/
二、Svn数据迁移(从windows-àlinux)
公司的svn库是在windows server上,存放目录为d:/wlotx/
1.先导出svn库导出到d:\svnbak\svnbak20100728.dump
在cmd命令行里输入
svnadmin dump d:/svndata > d:\svnbak\svnbak20100728.dump
此时你会看到窗口里显示从第一个版本开始备份,一直到最后一个版本
2.把svnbak20100303.dump想办法传到linux服务器,这是采用svn的方式
3.我在linux的svn代码库为:/usr/local/svnroot/wlotx
svnadmin load /usr/local/svnroot/wlotx < /ftp/svnbak20100728.dump
************************************************************************网上有人说用svnadmin load的时候,/wisedata/svn/repository必要要是空的。
我是在/wisedata/svn/repository库里原来有新增过代码,然后又把代码清空后,再用load的,而且是load成功
Issue:
用的是TortoiseSVN 右键选择show log 时弹出对话框提示“want to go offline?”其它功能 check out,commit,update都可以正常使用.
解决方法:
在svnserve.conf 文件中,设置anon-access = none就可以了
三、 svn配置邮件通知
以前在windows平台时,svnnotify是邮件通知的最好选择。但在aix系统上安装时,因某些模块需要联网获取,安装时很不方便。所以选择了svn自带的commit-email.pl文件来发送电子邮件。
当然,还可以使用mailer.py来发送邮件,但mail.py需要Python环境,安装也挺麻烦的。而aix自带了perl环境,commit-email.pl当然是比较好的选择。
commit-email.pl 的获取地址为:http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/
mailer.py的获取地址为:http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/mailer/
这二者应该是svn官方自己搞的脚本吧。
1、将下载后的commit-email.pl.in 改为commit-email.pl 上传至 hooks目录下
我的post-commit文件内容如下:
#export LANG=ZH_CN.UTF-8
export PATH=$PATH:/user/local/svn-1.6.12/bin:/usr/local/svnroot/wlotx/hooks:
REPOS="$1"
REV="$2"
commit-email.pl "$REPOS" "$REV" --from [email protected] [email protected] -s "svn"
[email protected] 是发邮件者,[email protected]是收件人的邮箱
上面设置 LANG和PATH的值非常重要,
设置LANG是为了使发送的邮件支持中文,在这卡了好久。哎。
设置/user/local/svn-1.6.12/bin 是使commit-email.pl能运行svnlook命令;
设置/usr/local/svnroot/wlotx/hooks 是为了运行commit-email.pl 和post-commit 命令;
2、修改commit-email.pl的一些设置
对于commit-email.pl 有些内容需要更改才能使得邮件通知成功。
第一点是修改perl路径
commit-email.pl 默认的perl路径是#!/usr/bin/env perl ,而centos下的perl是在/usr/bin目录下,所以将其改为#!/usr/bin/perl
第二点是设置smtp server的值
在61行,设置你的发送邮件的服务器
$smtp_server = "mail.****.com";
第三点是设置svn-look的路径
在64行,my $svnlook = "/usr/local/svn-1.6.12/bin/svnlook";
/usr/local/svn-1.6.12/是我的svn安装目录