2009-07-20 101 views
6

在SVN中存儲二進制文件有不同的方法嗎?如果是這樣,它們是什麼,以及我如何修改存儲選項?在SVN中存儲二進制文件的方法

我看,有4種方式來存儲SVN二進制文件:

  1. 壓縮的tar格式 - 導入 - 導出。
  2. 焦油 - 進口 - 出口。
  3. 進出口。
  4. 高效辦理登機手續。

其中哪些是時間efficiancy最有用?以及如何設置SVN以使用這些方法中的任何一種?

感謝, 俄德。


我有許多小型的二進制文件和一些大型的文件。所有這些都經常改變。我目前正在開發CVS並很快切換到SVN,我想知道如何存儲二進制文件。

我讀性能優化的Subversion(如上所述),並發現它有用,但沒有做的例子,所以我沒有完全明白怎麼做各的4種方式,他建議。

我的基本問題是天氣還是不違約是好的(和它們是什麼?)我首先考慮的是時間效率和空間,然後。謝謝:)

回答

3

您沒有設置顛覆使用任何的這些方法,您可以指定將文件複製到存儲庫時使用的方法。通過「方法」,我不是指你提到的4中的任何一個,而只是「導入」或「提交」,並且你必須告訴Subversion每次你想要存儲新的方法時選擇的方法將該文件修改爲存儲庫。

參見Performance tuning Subversion

正如你可以從描述中看到的那樣,爲了使用「方法1」,壓縮到tar然後使用導入,他們必須自己將所有的二進制文件壓縮成.tar文件,然後使用導入命令Subversion將文件添加到存儲庫中。

另外需要注意的是,導入命令將文件存儲爲新文件,而不是作爲之前版本的增量,因此,如果對大文件進行少量更改,它可能會比較省時,但不會節省空間承諾。

Subversion本身只提交和導入。提交是對現有文件的新修訂,作爲一系列增量(或新文件的第一個修訂版本)存儲,而導入只是一個新文件。除此之外,你必須自己做。

如果二進制文件現在纔再變,這可能是值得期待更進,但如果是定期更換,我只是使用Subversion爲正常,commit命令提示。

另請注意,關於二進制文件的典型建議是,如果可能的話,您代替二進制文件將源代碼存儲到生成這些二進制文件的任何內容,然後重新運行這些工具以重新生成實際的二進制文件。如果二進制文件需要時間或空間來重現,那麼只有在這之後您纔會保存有問題的二進制文件。

二進制文件的問題並不是真的很好比較,因此如果開發人員a和b都檢索最新版本,然後開發人員a在開發人員b嘗試做同樣的事情之前提交新的修訂,某種類型的衝突將發生。開發商B可能沒有選擇,只能嘗試自己找出變化。


編輯:我想強調,我的意思COMMIT和導入。

的主要區別是,提交會,假設你已經在倉庫中的文件已經,嘗試diff的文件中對以前的版本庫工作拷貝,只存儲改變。這需要時間和內存,以便找出這些差異,但通常會導致版本庫中的修訂版本更改。換句話說,Subversion服務器上的磁盤空間比IMPORT命令的影響要小。

另一方面,IMPORT將導入新文件,就好像您剛給它一個新文件並且說「忘記前一個,只是存儲此文件」,因此不會花費時間或內存找出差異,但是由此產生的變更集會更大。換句話說,Subversion服務器上的磁盤空間將比COMMIT命令受到的影響更大,但IMPORT的運行速度通常要快得多。

要施加任何其他的工作流程有顛覆之外的工作要做。這包括操作系統中可用的TAR命令和壓縮選項。如果你想使用「方法1」,你自己必須手動壓縮你想要導入的文件到一個單一的.tar文件,然後再提交給Subversion。你不能要求Subversion爲你做這些。你當然可以創建腳本文件來使這個過程自動化一些,但是,這仍然不是一個Subversion問題。

我會做這個一些嚴重的測試,以找出是否收益實際上是值得額外的工作,你會強加給你的Subversion工作流程。

+0

你基本上說只有2個選項是IMPORT和COMMIT? 並且導入可以選擇導入壓縮的tar文件(壓縮manualy)還是常規文件? 哪一個是時間效率? 謝謝:) – Oded 2009-07-20 07:32:46

1

你能更詳細地描述你的情況嗎?

你有幾個短小的二進制文件,所有的改變在一起嗎?幾個大的二進制文件獨立更改?你的文件經常改變嗎?

你有沒有真正發現的默認值是不夠好?我一直只是以與正常相同的方式添加二進制文件,並發現它只是工作。就像任何性能問題一樣,除非你有充分的理由,否則我不會試圖讓事情變得複雜 - 在這種情況下,請與我們分享這個理由。