svn的迁移及备份说明
这是我的一同事整理的一篇“SVN迁移”的文章,相当漂亮、实用。记下共勉。
迁移步骤:
一、在192.168.53.22上安装svn1.6.3服务器:CollabNetSubversion-server-1.6.3-3.win32.exe
1、在http://www.collab.net/downloads/subversion/地址下载服务器和客户端安装包,使用用户名ww100hh,密码为我个人常用的。
2、安装服务器,按缺省配置,选择也同时安装Apache,设为系统服务,设置仓库目录为F:/svn_repository,Apache端口由80改为8080(因为22机器上的CSP tomcat占用80端口了)。
3、安装完成。
4、配置库迁移:从53.7上复制K:/svnroot/psm目录到53.22的F:/svn_repository/psm即可。如果除了迁移外,还想建新的配置库,操作如下:
1)创建仓库目录:svnadmin create C:/repos/projectname
2).修改svnserve.conf中的权限:
anon-access = read
auth-access = write
password-db = passwd
realm = projectname
5、在服务中启动CollabNet Subversion svnserve服务。(由于产品管理部暂时用不到浏览器模式,所以将服务中的CollabNet Subversion Apache置为手动并关闭即可)
6、服务器的迁移工作完成。为了避免53.7再被误使用,原53.7的psm目录转移到了k:/svnroot/Suite 版本库_bak/psm。
二、客户端重定向
1、在客户端机器上存放产品管理部svn(代码)的最顶层目录中使用右键,选择“TortoiseSVN”>>"Relocate...", 打开更改svn版本库访问路径对话軭,输入更改后的路径svn://192.168.53.22/psm,然后一直确定即可。
更改前的svn访问路径
svn://192.168.53.7/psm
更改后的svn访问路径
svn://192.168.53.22/psm
2、如果过程中提示某个目录被locked了,提示你clean up,那么按提示,先在该目录下“TortoiseSVN”>>"Clean up",然后再Relocate即可。
备份步骤:
三、在53.5机器的E盘创建svn同步备份库:E:/svnroot/svn_psm_bak
1、53.5机器本身已安装有svn1.5.1,不需再安装,svn1.4以上版本支持svnsync同步命令。该机上已有一个svn库,是suite开 发的,安装在D盘上,而产品管理部svn备份库要放在E盘。由于处在不同的盘符下,svn不支持共用一个系统服务,而是必须为每一个盘符分别启动1个系统 服务(且各设一个端口,否则冲突)。因此需参照已有的suite库的做法,安装启动一个自己专用的系统服务。
2、首先在53.5的E盘建立一个svnroot主目录,然后创建这个新的用于备份的配置库:
svnadmin create E:/svnroot/svn_psm_bak
3、然后在53.5上创建svn系统服务,参考wiki资料:http://192.168.53.10/pages/viewpage.action?pageId=5376011。
1)打开cmd,执行如下创建命令,注意端口设为8083,执行完后,显示“[SC] CreateService 成功”:
sc create svn_psm_bak binpath= "/"C:/program files/Subversion/bin/svnserve.exe/" --service --listen-port 8083 -r E:/svnroot" displayname= "svn_psm_bak" depend= Tcpip start= auto
2)执行启动服务命令(也可直接在服务窗口操作):
net start svn_psm_bak
4、修改这个目标库的脚本:将H:/svn_psm_bak/hooks/pre-revprop-change.tmpl文件复制2个改名为pre- revprop-change和pre-revprop-change.bat,内容都改为只有1句:exit 0
5、在53.5机器上,对目标库初始化,执行完以下命令后会显示“复制版本 0 的属性”。
svnsync init file:///E:/svnroot/svn_psm_bak svn://192.168.53.22/psm --source-username your_name --source-password ***
6、执行同步,执行完以下命令后数据就开始传输。
svnsync sync file:///E:/svnroot/svn_psm_bak --source-username you_name --source-password ***
7、钩子自动同步
希望在每次提交时同步,则
1)需要在源版本库53.22增加post-commit脚本,内容如下:
echo off
set SVN_HOME="C:/Program Files/CollabNet Subversion Server"
%SVN_HOME%/svnsync sync --non-interactive svn://192.168.53.5:8083/svn_psm_bak
把以上内容存放为post-commit.bat,为保险起见也复制一个不带后缀名的post-commit文件,两文件内容相同,然后都放到53.22版本库F:/svn_repository/psm下的hooks目录下,重启svn服务。
2)需要修改备份库53.5的认证权限,让非认证用户也可以有写操作。具体是修改E:/svnroot/svn_psm_bak/conf/svnserve.conf文件,
将 # anon-access = read
改为:anon-access = write
保存后重启svn服务。
这样psm每次提交,都会引起svn_psm_bak的同步。