比如两个小组分布在两个城市,互相之间可以通过互联网通信,他们共同开发的项目文件比较大,比如所以文件加起来将近2G。

如果采用一个svn服务器,那么不在该服务器所在城市的小组,同步就非常困难。恐怕还需要购买专用的网络通道来进行。

这里要探讨的就是,每个小组都建立一个svn服务器,然后考虑如何实现同步。
1. 假定小组A已经实施了svn管理,当前版本为ra
2. 把版本ra export出来,做成tar包发送给小组B
3. 小组B解开tar包,import到他们的svn服务器,假定版本为rb

这样ra 和rb是一致的。

一段时间后,小组A得到了rA,小组B得到了rB。

4. 小组B运行某个工具
   比如: svnsync-diff rb rB
   该工具取得差异文件列表(svn diff -r rb:rB --summarize), 并且每个差异文件的版本和log。生成比如 B-rB-rb.tar
   把压缩包发给A组(这样的包就相对较小了)

6. A组拿到B-rB-rb.tar
   运行某个工具,比如:svnsync-merge B-rB-rb.tar
   该工具处理压缩包里的文件:
   A. 如果该文件在A组环境下不存在或者版本小或等于ra,可以用压缩包里的文件直接替换原文件。因为自ra之后未改过该文件
   B. 对于其它文件,则列出双方log信息,这些文件是两方都改了的,需要手工进行merge。

   最后得到版本AB.
   运行: svnsync-diff ra rAB
   得到的tar包,发送给B组,B组进行替换即可.(cp -a)

如果工具写得合理的话,还是很方便的。
同步后基线向后推移,如果不放新的话可以和原始同步版本比较差异,然后比较双方的差异包。