2011-02-01 34 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的肠子,它可能完全替换旧的文件(保留旧的参考)。这可能会迅速使用大量的磁盘空间。

相关问题