2007年3月2日星期五

版本库同步

如有转发请注明出处:http://www.subversion.org.cn/index.php?option=com_content&task=view&id=85&Itemid=9


版本库同步

Subversion 1.4增加了同步机制,可以实现一个版本库同另一个版本库的同步(但好像只是单向的),我们可以用来实现版本库的备份或镜像。

3.1. 对目标库初始化
svnsync init svn: //localhost/project2 svn://localhost/project1 
 

其中project2是目标的版本库,而project1是源版本库。其中的目标版本库必须为空,而且必须允许修订版本属性的修改,也就是在目标的版本库的hooks目录里添加一个文件pre-revprop-change.bat,内容为空即可。

3.2. 同步project2到project1
svnsync sync svn://localhost/project2 
 

这 时候你update一下你的project2的一个工作拷贝,就会发现有了project1的所有内容。如果project1又有提交,这时候 project2的版本库无法看到最新的变化,还需要再运行一遍sync操作,这样才能将最新的变化同步。需要注意的是,目标版本库只能做成只读的,如果 目标版本库发生了变更,则无法继续同步了。

3.3. 同步历史属性的修改

因为同步不会更新对历史属性的修改,所以svnsync还有子命令copy-revprops,可以同步某个版本的属性。

3.4. 钩子自动同步

希望在每次提交时同步,则需要在源版本库增加post-commit脚本,内容如下:

echo off
set SVN_HOME="D:\S ubversion"
%SVN_HOME%\bin\svnsync sync --non-interactive svn://localhost/project2
 

把以上内容存放为post-commit.bat,然后放到版本库project1下的hooks目录下,这样project1每次提交,都会引起project2的同步。

没有评论: