SVN在Linux与Windows间的数据同步
SVN 从 1.4 版本以后提供了一个独立的程序, svnsync, 用于同步两个版本库; 需要注意 hotcopy 仅用于本地的热备与 svnsync 功能类似但实质不同.
以下操作假定用户已提供两个 SVN 的操作接口, DEST_URI, SRC_URI( DEST_URI 是目的端地址, 用于接受数据; SRC_URI 是当前版本库)
# svnsync initialize DEST_URI SRC_URI --username cax --password password_for_cax
Copied properties for revision 0.
初始化完成, 开始同步数据:
# svnsync synchronize DEST_URI
Committed revision 1.
Copied properties for revision 1.
Committed revision 2.
....
错误处理:
在源端, 同步用的帐号需要有读权限, 在目的端同步帐号需要读写权限. 权限分配合理后,基本上就不会出现其他错误.
如果出现以下列出的之外的错误, 请先检查一下svn 服务是否可正常使用.
比较常见的错误是:
# svnsync initialize DEST_URI SRC_URI --username cax --password password_for_cax
svnsync: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svnsync: At least one property change failed; repository is unchanged
这是由于系统中没有 pre-revprop-change 钩子脚本导致的, 该文件在版本库的 ~/hooks/ 下, 只需拷贝一份即可.
cp -pf hooks/pre-revprop-change.tmpl hooks/pre-revprop-change
如果是windows系统, 还需要清空 pre-revprop-change 的内容, 并添加后缀为 pre-revprop-change.bat
在批处理文件中, Linux下 shell 中注释符 # 不能被 batch 正确解释也会重复出现该错误.
.