2010-01-18 66 views
1

我們通常使用Subversion(客戶端上的svn update;單向)將我們的軟件應用程序部署到我們的客戶端。由於高延遲(大文件下載速度很好),我們目前遇到了我們的客戶的問題,因爲他們在中國,我們的服務器在加拿大。在很長一段時間之後,Subversion只是出現錯誤。通過高延遲網絡連接同步許多(小)文件的方法

我們的應用程序有大量的小文件(.aspx,.config等)和一些大文件(.dll,.jpg),總共大約100mb-200mb。

我目前考慮做以下幾點:

  1. 做服務器
  2. 郵編結果
  3. FTP上的本地svn籤或大zip文件Rsync在 國外機器
  4. 在臨時文件夾 中解壓文件。
  5. 從本地執行本地rsync 文件夾到我們典型的安裝 文件夾。

有沒有更好的解決方案?

  • 設置Subversion鏡像靠近 到目的地? (我只需要一個月幾個小時,但可能很難找到)
  • 使用另一個版本控制系統? (git任何 更適合高延遲連接)?
  • 是否有方法將顛覆包 補丁(包括二進制文件) 重新應用在目標 而不是發送所有的數據?
  • 使用DropBox(使用Amazon S3)將文件傳輸到臨時文件夾會更好嗎?
+0

>>「是否有方法將subversion補丁(包括二進制文件)打包到目的地,而不是發送所有數據?」 // 你在描述git。 – jpdaigle 2010-01-18 17:46:05

回答

3

不要爲小文件的整個樹敲rsync,直到你給它一個鏡頭。它不會爲每個文件執行往返,它是流水線的,因此它應該與整個數據集上的其他任何內容一樣快。 (與TCP一樣快,可以將幀重組爲在高延遲鏈路上的有序數據包。)

查看how rsync works瞭解如何避免往返。

+0

我目前正在進行測試。看起來我們有一個勝利者。我假設是在做一個逐個文件的傳輸,但看起來我錯了! – 2010-01-18 18:20:19

+0

在我的測試中,它運行得比FTP慢(約10倍),但沒有像Subversion那樣崩潰,並且在下次執行時不需要重新下載相同的內容。 – 2010-01-18 21:24:33

2

您可以在所有文件中創建所有更改的unix樣式修補程序。只需將其轉換爲zip文件。

+0

你將不得不推出自己的做法。我認爲顛覆不是這樣開箱的。 – nholling 2010-01-18 17:17:10

+0

+1,即使對於二進制文件不起作用。而TortoiseSVN可以將補丁應用於工作副本。 – 2010-01-18 17:44:22

+0

這聽起來有點過頭了,在遠程終端服務會話中使用TortoiseSVN會很殘酷,每次點擊需要3秒註冊。 – jpdaigle 2010-01-18 17:55:42

0

您可以使用git(可能與git-svn)來處理傳輸。它在文件版本中移動差異非常有效。

否則,您可以使用xdiff二進制diff工具。