2011-02-05 71 views
6

我們一直在辦公室使用DIY SVN服務器已有大約一年的時間了。這是一個在家庭服務器上安裝SVN的簡單設置。我們使用龜SVN來訪問它我只是希望我在幾年前瞭解了一個版本控制系統..無論如何,訪問服務器當然是在1Gbps局域網上的辦公室完美的,但在外部它是可用的,但很差,受限於我們的ADSL線路上傳速度爲50k字節/秒。我想這可能會改善一天,'無限',但我們可能會等待。我可以在自己的辦公室服務器上創建一個託管的SVN存儲庫'並行'嗎?

我想有一個「並行」存儲庫託管,爲此我意識到我應該支付,訪問速度更快。這也會給我們一個額外的備份。我的回購剛剛低於40G,因此100G的限制可以。有沒有辦法做到這一點,並使兩個鏡像這樣的提交(至少小)幾乎立即可見?我已經在使用Svnbackup命令在我們的服務器上創建一個平行鏡像,這樣可以同時工作嗎?

讚賞任何建議或替代方案。

TIA 布賴恩

回答

2

你想一個只讀服務器,或讀+寫訪問多臺服務器?當您只需要一個只讀鏡像時,可以使用svnsync將您的辦公室服務器複製到鏡像服務器。

如果您想從不同的地方提交,請查看像hg + hgsubversion或git-svn這樣的分佈式工具,它們都可以用作svn的異步客戶端。

+0

謝謝。請讀寫。我的主要用途是在家裏(或不在辦公室)。 – 2011-02-05 11:19:54

+1

@Brian因爲svn的數據模型不允許這樣做,所以你不能(很容易)設置一個多主svn服務器集羣。您可以將中央服務器放置在互聯網中,這會導致辦公室性能下降。你需要決定你的表現是否可以接受。另一種方法是使用mercurial或git作爲svn客戶端,因爲這些工具允許您脫機工作。但是DVCS方法僅在您不需要文件鎖定或部分樹檢出等功能時才起作用。 – Rudi 2011-02-05 12:35:10

0

標準的Linux SVN服務器有鉤子,允許您在事件上運行自己的腳本。您可以使用post-commit掛鉤(只需在「hooks」目錄中放置一個名爲「post-commit」的腳本)。

現在,您可以發出整個存儲庫的熱點副本,這個存儲庫相當容易設置(svnadmin hotcopy from to),並使用ssh等將存儲庫複製到互聯網上的其他主機。你可以在兩臺機器上做到這一點,你很好。

缺點:

  • 如果你的倉庫大,那麼這需要大量的時間
  • 謹防有人提交一個存儲庫和別人同時其他庫的可能性。這可能會腐敗一切。你必須確保這不會發生,或者找到一種方式鎖定您的存儲庫(像在複製過程中關閉SVN)
  • 您需要兩臺機器shell訪問

您可以加快速度通過將存儲庫保存到本地文件並僅將差異傳輸到其他機器。

1

我認爲你真的需要的是一個slave代理 - 這是一個用於只讀訪問的subversion服務器的副本,當你寫(對它)時,提交會直接傳遞給master。當你閱讀的不僅僅是寫作,這提供了一個簡單而有效的方式來實現你想要的。

網絡上有很多tutorials,但他們都需要你使用http訪問(而不是svnserve)運行顛覆。通過優秀的svnsync和post-commit鉤子,奴隸始終保持最新狀態。

相關問題