我不熟悉HDF5中使用的文件格式,但是我想知道HDF5文件是否适合git的版本控制(例如Mercurial或Subversion)?我想我的意思是:HDF5文件是否适合基于行的差异处理,或者git是否必须将HDF5视为一个大二进制文件并为每个修订版本存储整个副本?
我不熟悉HDF5中使用的文件格式,但是我想知道HDF5文件是否适合git的版本控制(例如Mercurial或Subversion)?我想我的意思是:HDF5文件是否适合基于行的差异处理,或者git是否必须将HDF5视为一个大二进制文件并为每个修订版本存储整个副本?
Answers:
如果您提供一些其他技术细节,例如您要放在版本控制下的数据类型,如何存储不同版本的数据,可能更改的组件,那么将会得到更好的答案。以及没有哪些组件,以及您是否真的要拥有树状的历史(分支,合并)。
HDF5文件不适用于git下基于差异的版本控制。
git在后台使用基于哈希的数据库,因此可以存储HDF5数据文件的哈希,而无需实际存储文件本身。git-fat,git-annex和git-media这三个项目为您大大简化了此过程。如果您有想要完全版本化的大块,完全独立的数据块,我建议使用此方法。
如果您可以将数据存储分为非易失性和易失性区域,则将大大提高与版本控制数据库的交互效率。如果您不需要git提供的DVCS功能,则可能还需要考虑将数据库显式地用于数据。
我想我的意思是:HDF5文件是否适合基于行的差异处理,或者git是否必须将HDF5视为一个大二进制文件并为每个修订版本存储整个副本?
这个问题的字面答案是git无法有效地处理HDF5文件。
有关具有某些二进制文件的项目的版本控制的更有用的答案,请参见以下stackoverflow问题:https : //stackoverflow.com/questions/540535/managing-large-binary-files-with-git
正如其他人所说,如果您描述了总体目标,而不是确切的技术要点,那么提出有用的建议会比较容易。根据您的目标,这里还有另外一条建议可能对您有所帮助。
ActivePapers项目(http://www.activepapers.org/)在HDF5之上提供了一个代码和数据管理系统。ActivePaper是一个HDF5文件,其中包含数据集和在其上起作用的代码,元数据跟踪哪个代码段计算了哪个数据集以及使用了哪些输入数据。结合对源代码的版本控制和/或对整个HDF5文件的版本控制(使用其他答复中提到的git-annex等工具),ActivePapers可用于对计算进行版本控制,而不是用于隔离的文件或数据集。
免责声明:我是ActivePapers的作者。