互不聯通的兩個SVN服務器之間的雙向同步

SVN從1.4版開始支持兩個repository之間的同步,但這種“同步”只是單向的,只能把repository-1的數據同步到repository-2中,實際上repository-2只是一個鏡像而已。

在我們的項目中,開發團隊分別在兩個不同的地點,處於安全考慮,兩地的內網不對外開放,因此兩地無法訪問同一個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/

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章