以某種方式在存儲庫中存儲「未壓縮」版本的正常壓縮文件是否有意義?在提交到存儲庫之前解壓壓縮的數據文件
如果是這樣,是否有一個標準的方法來實現這一點? (也許一個標準的預提交鉤子,將每個這樣的文件解壓縮到一個專門命名的文件夾中; 和一個post-checkout鉤子,將這些特殊命名的文件夾壓縮成LibreOffice知道如何讀取和寫入的壓縮文件?由"Should I decompress zips before I archive?"描述的過程?) (也許黑客版本控制軟件的代碼自動解壓縮舊版本和新版本,並在解壓縮的文件之間存儲差異,如果失敗或沒有提供顯着的改進,回到原始文件之間存儲直接差異的原始系統,還是直接存儲文件?)
我有一個經常編輯的OpenOffice/LibreOffice文件的集合。 我將它們存儲在版本控制庫中 - 按照"Should images be stored in a git repository?"的建議。 雖然我碰巧使用TortoiseHg或SourceTree來訪問我的存儲庫,而不是git。
我碰巧知道Open Office文件實際上是帶有幾個XML文件的zip壓縮容器。 (我聽說很多其他流行的應用程序「二進制文件格式」也是某種形式的zip壓縮文件)。
我的理解是即使是對這些「二進制」文件的最小改變也會導致整個新文件存儲在存儲庫中。 與「文本」文件中的小改動相反,這隻會導致更改被存儲和傳輸。
從理論上講,這將具有的優點:
- 凡變化是隻有幾句話,我可以看到的是,在更改日誌中的「差異」的觀點改變了原話。 (而不是非信息性的「二進制文件更改」消息)。
- 當幾個不同的人獨立編輯文件的版本14時,將其所有改進的所有改進合併到文件的版本16中,而不進行迴歸會更容易。
- 與遠程存儲庫更快的同步 - 只需要傳輸簡短的「更改」,而不是整個(壓縮)文件。
- 根據磁盤空間可能更小的存儲庫 - 經過幾百次更改後,我期望一個相對較小的存儲庫只包含幾百個小的更改,而不是包含這些數百個完整副本的相對較大的存儲庫文件。 (我最後列出了這個優點,因爲在這些價格便宜的磁盤空間中它幾乎是不相關的)。