对几个大型(100MB +)CSV文件中包含的数据进行版本控制的最佳做法是什么?
SVN是一个不错的选择吗?
更新 经过一段时间的讨论后,我觉得GZIP / Zip CSV文件然后将其添加到repo可能是更好的选择。这样,我就可以节省版本管理的麻烦,同时不会丢失磁盘空间。至少与手动管理版本一样好,如果不是更好的话。
仍在寻找完美的解决方案。
另外,小记: 不要求对文件内容进行版本控制。就像我不需要知道文件中的哪些单词已经更改,只要我能够记录更改摘要或为每个版本添加注释。
答案 0 :(得分:1)
SVN非常慢,因为它通过网络传输所有数据。 尝试使用本地git或hg存储库。这只需要文件访问权限,这应该比网络快得多。这两种repo类型在处理文件,文件重命名和合并方面也有更好的处理方式。另外,git可以使用“插件”来支持更多的文件类型,例如合并office文档(odf,doc等)。
与SVN相比,您只有一个包含压缩存储库的隐藏repo目录。 SVN在每个子目录中都有一个.svn目录,其中包含文件的最后一个状态(以及其他内容)。
一些随机数字:
假设存储库中所有文件(不是回购信息)的大小为100MB
这是我们使用SVN和git所经历的。我偶尔只使用hg(mercurial)。
关于MrEyes的回答,我还建议在CSV文件或文件名中添加一些版本信息。 Git将识别文件重命名,包括更改等。
答案 1 :(得分:1)
这在很大程度上取决于您打算如何使用这些文件。
SVN和大多数其他源代码控制系统会为您提供唯一标识该文件特定版本的修订号。每次提交新CSV时,此提交都有自己的修订号。
...然而
根据使用情况,它可能不是一个好的解决方案。让我们说你签入一个CSV,这是在SVN版本号1234.有人然后检查该文件,也许发送给其他人等等.GV的持有者将不知道,从CSV,它是什么版本和因此不知道他们是否使用最新版本。
就个人而言,我会在文件名中加上一个版本号,或在包含版本号的CSV的开头/末尾添加一行 - 但这些也取决于您的使用情况。
思考的食物......
编辑此外可能存在差异问题,我不确定SVN是否支持CSV上的差异,因此每次登记时,使用SVN的内容,它可能会完全取代旧文件(保持旧的参考)。这可能会迅速占用大量磁盘空间。