2011-02-01 81 views
2

版本控制幾個大型(100MB +)CSV文件中包含的數據的最佳做法是什麼?版本化文本數據的最佳做法

SVN是一個不錯的選擇嗎?

更新: 對這個醞釀了一段時間後,我覺得這可能是一個更好的選擇GZIP/ZIP的CSV文件,然後將其添加到回購。這樣,我就可以節省版本管理的頭痛,同時不會在磁盤空間上丟失。至少和手動管理版本一樣好,如果不是更好的話。

仍在尋求完美的解決方案。

此外,小記: 版本的文件內容不是必需的。就像我不需要知道文件中有什麼詞語發生了變化,只要我能夠記錄更改的摘要或爲每個版本添加備註即可。

回答

1

SVN非常慢,因爲它通過網絡傳輸所有數據。 嘗試使用本地git或hg存儲庫。這隻需要文件訪問,這應該比網絡快得多。兩種回購類型在移動文件,文件重命名和合並方面都有更好的處理。此外,git可以使用「插件」來支持更多的文件類型,例如合併辦公文檔(odf,doc等)。

與SVN相比,您只有一個隱藏的回購目錄,其中包含壓縮的存儲庫。 SVN在每個包含文件最後狀態(和其他內容)的子目錄中都有一個.svn目錄。

一些隨機數:

假設存儲庫中的所有文件(不回購的信息)的大小爲100MB

  • 的SVN結帳將採取200到250MB,所有舊版本必須從tranferred SVN服務器。
  • git或hg repo需要150MB(假設文件可以壓縮得很好),包括所有文件的版本

這就是我們在SVN和git上遇到的情況。我僅偶爾使用hg(m​​ercurial)。

關於MrEyes的回答,我也建議添加一些版本信息到CSV文件或文件名。 Git將識別文件重命名,包括更改等。

1

這很大程度上取決於您打算如何使用這些文件。

SVN和大多數其他源代碼管理系統會爲您提供版本號,以唯一標識文件的特定版本。每次你提交一個新的CSV文件,這個提交都會有自己的修訂版本號。

但是......

取決於使用它可能不是一個很好的解決方案。比方說,你檢查一個CSV,這是在SVN修訂號1234.有人然後檢查該文件,可能發送給其他人等等。CSV的持有人不會知道,從CSV,它是什麼修訂和因此不知道他們是否使用最新版本。

就我個人而言,我會在文件名中添加一個版本號,或者在包含版本號的CSV的開始/結尾添加一行 - 但這些也取決於您的使用情況。

深思...

編輯此外,還有可能與diff文件的問題,我不能肯定,如果SVN支持在CSV的diff所以每次您檢查,withing SVN的腸子,它可能完全替換舊的文件(保留舊的參考)。這可能會迅速使用大量的磁盤空間。