2008-09-27 137 views
57

我的公司有一個緩慢的互聯網連接的子公司。我們的開發人員忍受着與我們中央服務器Subversion的互動。有沒有可能爲他們配置一個slave/mirror?他們將與服務器本地交互,所有提交將自動同步到主服務器。如何同步兩個Subversion版本庫?

這應該對開發人員儘可能透明地工作。可用性是必須的。

請不要改變我們的版本控制系統的建議。

+0

我是持懷疑態度的代理可以如何改進的問題。這是可能的提交需要爲用戶的POV較少的時間,但數據仍必須被髮送到主,而這仍需要的網絡帶寬是相同的。因此,即使對用戶而言更新速度更快,對主服務器進行更新也同樣緩慢。由於這種異步行爲,主人可能會開始落後。 – aseq 2012-08-09 00:16:47

回答

27

顛覆當你使用HTTP來承載您的存儲庫1.5引入了代理支持。開發人員可以從奴隸簽出他們的工作副本。然後,所有隻讀操作(比較,日誌,更新等)將使用從機。提交時,從設備透明地將所有寫操作傳遞給主設備。

49

這是可能的,但不一定是簡單的:你正在試圖解決的問題是危險地接近建立一個分佈式的開發環境,這是SVN不正是爲...設計。

的SVN鏡方式

您可以使用svn mirror爲SVN書文檔創建只讀鏡主存儲庫的中解釋。你的開發者每個人都與最接近他們的鏡像交互。但是從資料庫的用戶將不得不使用

SVN切換--relocate master_url

纔可以承諾,他們必須記住,一旦他們完成搬遷回來的奴隸。如果您使用命令行客戶端,則可以使用圍繞SVN上的存儲庫修改命令的包裝腳本來自動執行此操作。請記住,快速重新定位操作會增加一些開銷。 (此外,小心複製庫UUID - 見the SVN documentation

[編輯 - 檢查TortoiseSVN文檔看來,你可以有TortoiseSVN的execute hook scripts client side。您現在可以創建一個前/後提交腳本。要麼或試圖看看你是否可以使用TortoiseSVN automation interface做到這一點]。

的SVK方式

svk是一組模擬了SVN分佈式鏡像服務Perl腳本。您可以進行設置,以便本地分支(鏡像)由多個開發人員共享。那麼開發人員的基本使用將是完全透明的。你將不得不使用svk客戶端來進行櫻桃採摘,合併和重組。如果你能夠在分佈式概念上得到解決方案,這是可行的。

的混帳svn的雖然我從未使用過自己,你也可以有遙遠的本地開發商使用git,並使用git-svn網關同步方式

最後的話

這一切都取決於你的開發環境,你需要集成的水平。根據您的IDE(如果你可以改變SCM),你可能想看看其他的完全分佈式的SCM(認爲Mercurial/Bazaar/Git/...)支持分佈式開發的開箱。

+0

是否可以創建一個TortoiseSVN客戶端腳本來自動執行此重定位? – neves 2008-09-27 07:12:35

+4

這個答案比我選擇的還多。我認爲svnsync解決方案更好,因爲提交在服務器上是透明的。無需搬遷。偉大的可用性。當鏡像未完全同步時,用戶最終會發現奇怪的錯誤消息。通常他們只需等待幾分鐘,一切都很好。 – neves 2011-07-12 21:21:17

+0

鏈接到svn redbook記錄直寫代理設置的章節:http://svnbook.red-bean.com/en/1.7/svn.serverconfig.httpd.html#svn.serverconfig.httpd.extra.writethruproxy – 2013-06-13 06:27:57

2

如果存儲庫中的一個完全只讀,你可以使用「svnsync的」保持它與最新的主存儲庫。此工具通常與代理支持結合使用以創建主從設置。

E.g. Apache這樣做是爲了將他們的資源庫鏡像到不同的大洲。主Repostitory位於美國,但如果我從EU訪問存儲庫,我會得到一個與主服務器一樣好的本地鏡像。

1

有Subversion版本庫的商業解決方案,提供真正的主動 - 主動複製(沒有主從)如果您需要超越svnsync提供的名爲「Subversion MultiSite」的性能和數據安全性。

聲明:我的公司,使該解決方案的工作

1

VisualSVN服務器的Multisite Repository Replication是專爲這種情況。

您可以在主辦公室保留主存儲庫,並在遠程位置設置多個可寫入的從屬存儲庫。

這應該儘可能透明地爲開發商。 可用性是必須的。

  • 從機和主機是透明和自動之間的複製,

  • 每個主設備和從存儲庫是從用戶的角度來看的可寫Subversion信息庫,

  • 作品OUT-並且可以通過VisualSVN Server Manager MMC控制檯進行幾次點擊配置。

VisualSVNServerManagerConsoleMultisite