svn 版本库迁移和自动同步

来源:互联网 发布:js把input变成span 编辑:程序博客网 时间:2024/06/06 18:13

第一步,安装

不多说了,网上资料很多

注意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/*

 

 

 

 

 

建议:最好先在目标服务器上进行操作,然后在在源库上进行操作。避免同步时报版本号不一致的错误。

 

 推荐一本书籍



l




原创粉丝点击