在我们的项目中,开发团队分别在两个不同的地点,处于安全考虑,两地的内网不对外开放,因此两地无法访问同一个SVN repository,需要分别建立一个repository,并实现这两个repository之间的双向同步。
解决方案如下:
1). 在两地分别建立两个SVN服务器repository-1和repository-2,两个的开发人员分别使用各自的SVN服务器
2). 由一人携带笔记本,负责同步两个repository中的数据。如果要把repository-1中的更改同步到repository-2中,则方法如下:
在笔记本上建立localcopy-1目录,从repository-1中export出所需的文件(注意,是export,而不是check out),这样,localcopy-1目录下不会包含svn元数据。
将笔记本携带至repository-2所在地点,建立localcopy-2目录,并从repository-2中check out所需的文件,这样localcopy-2目录下会包含svn元数据。
将localcopy-1中的文件复制到localcopy-2目录下,覆盖所有的同名文件。由于localcopy-2中包含了svn元数据,可以由SVN客户端工具在自动识别出哪些文件做了哪些更改。最后,把localcopy-2目录中的文件commit到repository-2中即可。
若要把repository-2中的更新同步到repository-1中,则原理同上,先建立localcopy-2目录,从repository-2中export出文件。然后将笔记本携带至repository-1所在地点,建立localcopy-1目录,从repository-1中check out文件到localcopy-1目录。然后将localcopy-2目录下的文件覆盖到localcopy-1目录,最后把localcopy-1目录commit到repository-1即可。
SVN服务器端软件下载:http://subversion.tigris.org/
SVN客户端软件下载:http://tortoisesvn.tigris.org/