2010-01-25 80 views
5

我的本地局域網上有一臺svn服務器,它在windows上。開發人員使用並檢入/退出。爲了更安全一方,我們從一個linux機架上佔用了一臺服務器。是否有可能從本地svn服務器到遠程服務器進行自動每週同步?遠程服務器主要用作遠程備份,但如果有人想訪問,那麼他們可以這樣做,因爲我們的LAN沒有靜態或外部IP。svn服務器自動同步

回答

4

我建議爲此使用svnsync。當從post-commit鉤子觸發時,這個工具(svn發行版的一部分)允許在兩個(或多個)svn服務器之間進行實時同步。

+0

如果你去這個方向(推薦)如果提交後掛鉤失敗,請確保您閱讀了不同步的疑難解答。除了提交後掛鉤之外,您可能還想查看定期同步。 一個例子可以在這裏找到 http://blogs.atlassian.com/developer/2008/11/subversion_replication_at_atla.html – Dan 2010-01-25 17:48:52

0

只要備份服務器使用只讀,像rsync這樣的基本應該工作。但是你可能想要實現一個重試循環,保持同步,直到沒有什麼需要同步爲止,以便在某人正在提交內容時不會同步某個狀態。

如果你需要兩個站點的讀/寫訪問權限,那麼使用git之類的東西可能會更安全和更容易,並且在客戶端使用git-svn作爲「向後兼容性」。

另一種選擇是使用SVK,這是一個建立在SVK之上的分佈式版本控制系統。但這對客戶來說也不完全透明。

0

您可以使用svnadmin dump轉儲整個存儲庫。 您可以使用postcommit掛鉤以及相同的命令以獨立格式轉儲提交,以後可以重新應用

將這些和rsync結合使用,您可以在任何其他服務器上有效地複製服務器。只要您的備份服務器只是只讀訪問,它就可以使用。在發生故障的情況下,一個簡單的svn開關將允許開發人員使用備份服務器。

我會建議你setup acls禁止寫入備份服務器,除非它成爲主服務器。

peter提到的另一個解決方案可能是svk,但不能用於完全自動同步:如果在兩臺服務器上發生衝突更改,會發生什麼情況?該腳本將失敗或破壞這一點。任何分佈式合併都必須由人來審查。

另一種解決辦法是使用svn --mirror方式

你應該嘗試在保持回購同步閱讀本作更詳細的信息:How to synchronize two Subversion repositories? :)