第一步,安装
不多说了,网上资料很多
注意apache里mod_dav_svn.so和mod_authz_svn.so这两个库有没有加载。
apache里面的配置文件看下面的内容。
建立访问控制文件用apache自带的htpasswd命令
第二步:版本库迁移
文件 /root/svnjilu 内容,注意这里的路径是文件夹和版本库,版本库的名称是后面的,前面的代表文件夹的名称,不要搞混了。
比如jhmal_rep代表文件夹,jhmall_comm_proj代表版本库。
jhmall_rep/jhmall_comm_proj
jhmall_rep/jhmall_front_proj
jhmall_rep/jhmall_admin_proj
jh_union_rep/masamaso_union_proj
jh_ad_rep/admanager_proj
jhscm_rep/jh_service_comm_proj
jhscm_rep/jh_service_member_proj
jhscm_rep/jh_service_product_proj
jhscm_rep/jh_service_order_proj
jhstats_rep/jh_weblog_proj
jhstats_rep/jh_statistics_proj
jhscm_rep/jh_service_wms_proj
在源版本库上把版本库导出来,/var/repos/,svn版本库路径,
for i in $(cat /root/svnjilu );do svnadmin dump "/var/repos/$i" > "/data/zs/$i.dat" ;done #导出版本库
rsync --av --progress /data/zs/* 192.168.1.246:/data/zs#传文件,没的说
在新的svn服务器上建立导入新的版本库
cd /data/svn #版本库位置
rm -rf jh_ad_rep jhmall_rep jhscm_rep jhstats_rep jh_union_rep #删除以前的版本库,没有的话就算了
mkdir jh_ad_rep jhmall_rep jhscm_rep jhstats_rep jh_union_rep #建目录
for i in $(cat /root/svnjilu );do svnadmin create /data/svn/$i ;done
chown -R apache.apache *
for i in $(cat /root/svnjilu );do svnadmin load /data/svn/$i < /data/zs/$i.dat ;done
chown -R apache.apache *
for i in 'jhmall_rep/jhmall_admin_proj';do svnadmin load /data/svn/$i < /data/zs/$i.dat;done
另外注意新版本控制里面的权限文件和老版本的文件不同,注意目录和版本库的路径写法。
apache配置
<Location /svn>
DAV svn
SVNParentPath /data/svn/
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /data/svn/conf/passwd
AuthzSVNAccessFile /data/svn/conf/authz
Require valid-user
</Location>
<Location /jhmall_rep>
DAV svn
SVNParentPath /data/svn/jhmall_rep
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /data/svn/conf/passwd
AuthzSVNAccessFile /data/svn/conf/authz
Require valid-user
</Location>
权限文件放在/data/svn/conf,authz和passwd文件
auth管理分为用户组管理和版本库管理
[groups]
admin = lizhi,zhangyanbing,liuzhenjiang
[jhmall_comm_proj:/]
@admin = rw
@jhmall_comm_proj = rw
passwd文件管理
在该目录下执行
htpasswd passwd 用户名
第三步:同步
#目标库上的操作
cd /data/svn
rm -rf jh_ad_rep jhmall_rep jhscm_rep jhstats_rep jh_union_rep
mkdir jh_ad_rep jhmall_rep jhscm_rep jhstats_rep jh_union_rep
for i in $(cat /root/svnjilu );do svnadmin create /data/svn/$i ;done
for i in $(cat /root/svnjilu );do cp /data/svn/$i/hooks/pre-revprop-change.tmpl /
/data/svn/$i/hooks/pre-revprop-change ;chmod +x /data/svn/$i/hooks/pre-revprop-change ; /
sed 's/exit 1/exit 0/g' /data/svn/$i/hooks/pre-revprop-change -i ;done
chown -R apache.apache /data/svn/*
for i in $(cat /root/svnjilu );do svnsync init file:///data/svn/$i http://192.168.1.246/$i /
--username sync --password nnDYBlz ;done
for i in $(cat /root/svnjilu );do svnsync sync --non-interactive file:///data/svn/$i /
--username sync --password nnDYBlz ;done
#源服务器上的操作
#配置钩子程序 ,自动更新
for i in $(cat /root/svnjilu );do cp /data/svn/$i/hooks/post-commit.tmpl /data/svn/$i/hooks/post-commit ; /
chmod +x /data/svn/$i/hooks/post-commit ; /
echo "/usr/bin/svnsync sync --non-interactive http://192.168.1.247/$i --username sync --password nnDYBlz" /
>> /data/svn/$i/hooks/post-commit ;/
sed -i 's/mailer.py/#mailer.py/p' /data/svn/$i/hooks/post-commit ;done
chown -R apache.apache /data/svn/*
建议:最好先在目标服务器上进行操作,然后在在源库上进行操作。避免同步时报版本号不一致的错误。
推荐一本书籍