星期一, 十一月 17, 2008

svnsync及其不爽之处

最近折腾trac和远程svn的整合,就要把远程svn sync到trac所在的服务器。
考虑两个方案:
1. SVK
2. svnsync

SVK装了一个,libneon引用libssl出现了一个错误。于是转试svnsync。

svnsync是svn自带了,不需再安装。

1. 准备目标目录
mkdir ~/target
svnadmin create ~/target

2. 制作hook
cd ~/target
echo '#!/bin/sh' > hooks/pre-revprop-change
chmod 777 hooks/pre-revprop-change #不要忘记了!

3. 设置镜像
svnsync init file:///home/xxx/target http://remote-svn-host/repos/proj1 --username=xxx --password=xxx

4. 同步
svn sync file://~/target

说说不爽的地方吧,就是不能单独同步http://remote-svn-host/repos/proj1下面的一个子目录!
如果这样:
svnsync init file://~/target http://remote-svn-host/repos/proj1/ourteam --username=xxx --password=xxx
那么就会报错:
svnsync: Session is rooted at 'http://remote-svn-host/repos/proj1/ourteam' but the repos root is 'http://remote-svn-host/repos/proj1'

我们和另外几个team合用了proj1这个目录,如果全部同步十分巨大。

只好放弃。再试试解决SVK的问题吧。

comments:
subversion 1.5版本以上所带的svnsync已经可以同步一个子目录了。
不过如果server端svn版本太低的话也是不行的。。。。

没有评论: