首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > CVS SVN >

配备SVN镜像

2012-07-27 
配置SVN镜像1.环境? ??? 两台RHEL5:192.168.0.5?? 192.168.0.6 ?2.在192.168.0.5和192.168.0.6上 搭建SVN

配置SVN镜像

1.环境?

??? 两台RHEL5:192.168.0.5?? 192.168.0.6

?

2.在192.168.0.5和192.168.0.6上 搭建SVN服务器

?

下载下面几个包并依次解压安装:

sqlite-amalgamation-3.6.13.tar.gz

apr-1.2.7.tar.gz

apr-util-1.2.7.tar.gz

httpd-2.2.13.tar.bz2

subversion-1.6.6.tar.bz2

?

3.检查SVN安装是否成功

执行下命令svnadmin,看看有反应不。

?

4.在192.168.0.5上建库

mkdir -p /data/svn

cd /data/svn

svnadmin create test_dir

cd test_dir 看见有很多库文件

cd /data/svn/test_dir/conf

其下有几个配置文件,密码文件 passwd,服务器的配置文件svnserve.conf 。

?

.修改svnserve.conf将下面几行的注释去掉:

anon-access = read
auth-access = write

password-db = passwd

上述三行前面不能留有空格,否则要出错。

?

修改密码文件passwd

添加一个账号和口令diego? , diego?

?

cd /data/svn/test_dir

启动服务

svnserve -d -r /data/svn/test_dir

?

netstat -nltp 看见有一个3690的端口在使用 证明启动成功。

?

将代码导入版本库。

svn import /data/svn svn://192.168.0.5/svn/test_dir? --username 'diego' --password 'diego' -m "initial import"

?

-m为注释内容。

?

5.在192.168.0.6上建镜像库

mkdir -p /data/svn/

建立一个镜像库

svnadmin create mir

svnserve -d -r? /data/svn/mir/

netstat -nltp 看见有一个3690的端口在使用 证明启动成功。

?

修改配置文件:

cd /data/svn/mir/conf

svnserve.conf将下面几行的注释去掉:

anon-access = read
auth-access = write

password-db = passwd

上述三行前面不能留有空格,否则要出错。

?

修改密码文件passwd

添加一个账号和口令diego? , diego?

?

修改同步文件

cp pre-revprop-change.tmpl?? pre-revprop-change

chmod +x pre-revprop-change

chmod 777 pre-revprop-change

?

同步初始化

svnsync init file:///data/svn/mir/? http://192.168.0.5/svn/test_dir

?

此时mir库就是test_dir库的一个异地拷贝。

要想手动同步的话 可以执行: svnsync sync svn://192.168.0.6 --username diego --password diego?

此时还不能实时同步,显然手动同步很麻烦。

好,镜像192.168.0.6的配置到此结束。下面来通过配置源库192.168.0.5上的test_dir来达到实时的同步。

?

6.配置实时同步

SVN上有两个很特殊的文件,到192.168.0.5上,cd到 /data/svn/test_dir/hooks

下面有2个很重要的文件: pre-commit.tmpl和post-commit.tmpl

顾名思义,前者是SVN每次提交之前都要执行的脚本。后者是SVN每次提交之后执行的脚本。

?

此时我们若将同步命令svnsync init file:///data/svn/mir/? http://192.168.0.5/svn/test_dir写入上述2个脚本中的一个,显然就可以达到实时同步的目的了。

?

但是:建议最好将svnsync init file:///data/svn/mir/? http://192.168.0.5/svn/test_dir写入post-commit脚本里,而非pre-commit中,为什么,想想就明白,写入pre-commit中的话,是每次提交前同步,显然镜像库会比源库一直会落后一个版本。

?

上面2个脚本怎么写?

SVN提供了2个模板,我们改下就OK,

cd /data/svn/test_dir/hooks

cp pre-commit.tmpl? pre-commit

chmod +x pre-commit

chmod 777 pre-commit

?

cp post-commit.tmpl? post-commit

chmod +x post-commit

chmod 777 post-commit

?

7.下面是我的脚本内容:

?

?

实际上只要配置一个post-commit就行了。

?

8.测试下,是否完成2个服务器SVN的实时同步:

?

提交一个excel文件到源库 192.168.0.5

配备SVN镜像

?

到192.168.0.6的镜像库下看看


配备SVN镜像

我们看到同步成功了。

?

总结:利用这种方案,可以达到SVN的容灾。

?

实际中开发的代码或者文件都可以提交到192.168.0.5的SVN上,而此时192.168.0.6上会形成一个和192.168.0.5上一模一样的镜像库,关键是这种同步是实时的。

?

所以不管192.168.0.5的SVN因为OS还是硬件故障挂掉,我们的另外一台机器192.168.0.6都可以立马接替它的工作。SVN挂掉 不影响团队工作,最主要的是做好了SVN的数据安全,更重要的是这种数据是实时的。何乐而不为呢?

?

?

?

.

热点排行