#变量定义
svnstorage=("test1" "test2" "test3" "test4" "test5" "test6" "test7" "test8" "test9")
svndir="/srv/svn"
if [ ! -d $svndir ]; then
mkdir -p $svndir
chown -R www-data.www-data $svndir
fi
#循环创建目标版本库
for svn in ${svnstorage[*]}
do
#删除已有的svn版本库
if [ -d $svndir/$svn ]; then
rm -r $svndir/$svn
fi
#创建目标版本库
svnadmin create $svndir/$svn
#修改pre-revprop-change
cp $svndir/$svn/hooks/pre-revprop-change.tmpl $svndir/$svn/hooks/pre-revprop-change
chmod +x $svndir/$svn/hooks/pre-revprop-change
sed -i "s/exit 1/exit 0/g" $svndir/$svn/hooks/pre-revprop-change
#修改版本库属主(svn通过apache使用http协议访问,因此属主为www-data)
chown -R www-data.www-data $svndir/$svn
done
初始化&&同步
初始化命令
初始化,建立目标库与源库之间的同步关系
svnsync initialize 目标库URL 源库URL
同步命令
svnsync synchronize 目标库URL
实现脚本
为了实现镜像版本库的同步,因此将可以同时访问A&&B服务器上的版本库的用户名和密码用变量的方式写在了脚本中
#!/bin/bash
#变量定义
svnstorage=("test1" "test2" "test3")
svndir="/srv/svn"
if [ ! -d $svndir ]; then
mkdir -p $svndir
chown -R www-data.www-data $svndir
fi
#循环创建目标版本库
for svn in ${svnstorage[*]}
do
#删除已有的svn版本库
if [ -d $svndir/$svn ]; then
rm -r $svndir/$svn
fi
#创建目标版本库
svnadmin create $svndir/$svn
#修改pre-revprop-change
cp $svndir/$svn/hooks/pre-revprop-change.tmpl $svndir/$svn/hooks/pre-revprop-change
chmod +x $svndir/$svn/hooks/pre-revprop-change
sed -i "s/exit 1/exit 0/g" $svndir/$svn/hooks/pre-revprop-change
#修改版本库属性
chown -R www-data.www-data $svndir/$svn
done
#初始化&&同步目标版本库
localip="192.168.1.2"
remoteip="192.168.1.1"
username="root"
password="root"
for svn in ${svnstorage[*]}
do
#初始化
svnsync initialize $localip/svn/$svn $remoteip/svn/$svn --username $username --password $password
#同步
if [ $? -eq 0 ]; then
svnsync synchronize $localip/svn/$svn --username $username --password $password
fi
done