Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 文本数据版本控制的最佳实践_Svn_Version Control_Csv - Fatal编程技术网

Svn 文本数据版本控制的最佳实践

Svn 文本数据版本控制的最佳实践,svn,version-control,csv,Svn,Version Control,Csv,对几个大型(100MB+)CSV文件中包含的数据进行版本控制的最佳做法是什么 SVN是一个好的选择吗 更新: 在考虑了一段时间后,我觉得对CSV文件进行GZIP/Zip压缩,然后将其添加到repo中可能是一个更好的选择。这样,我就省去了版本管理的麻烦,同时又不会损失磁盘空间。这至少和手动管理他们的版本一样好,如果不是更好的话 仍然在寻找完美的解决方案 还有一个小提示: 不要求对文件内容进行版本控制。就像我不需要知道文件中发生了什么变化,只要我能够记录变化的摘要或为每个版本添加注释。SVN速度非常

对几个大型(100MB+)CSV文件中包含的数据进行版本控制的最佳做法是什么

SVN是一个好的选择吗

更新: 在考虑了一段时间后,我觉得对CSV文件进行GZIP/Zip压缩,然后将其添加到repo中可能是一个更好的选择。这样,我就省去了版本管理的麻烦,同时又不会损失磁盘空间。这至少和手动管理他们的版本一样好,如果不是更好的话

仍然在寻找完美的解决方案

还有一个小提示:
不要求对文件内容进行版本控制。就像我不需要知道文件中发生了什么变化,只要我能够记录变化的摘要或为每个版本添加注释。

SVN速度非常慢,因为它通过网络传输所有数据。 请尝试使用本地git或hg存储库。这只需要文件访问,应该比网络快得多。这两种repo类型在移动文件、文件重命名和合并方面也有更好的处理能力。此外,git还可以使用“插件”来支持进一步的文件类型,例如合并office文档(odf、doc等)

与SVN不同,您只有一个包含压缩存储库的隐藏repo dir。SVN在每个包含文件(和其他内容)最后状态的子目录中都有一个.SVN目录

一些随机数:

假设存储库中所有文件(非回购信息)的大小为100MB

  • SVN签出需要200到250MB,所有旧版本都必须从SVN服务器传输
  • git或hg repo需要150MB(假设文件可以很好地压缩),包括所有版本的文件
这就是我们在SVN和git方面的经验。我只是偶尔使用汞


关于答案,我还建议在CSV文件或文件名中添加一些版本信息。Git将识别文件重命名,包括更改等。

这在很大程度上取决于您打算如何使用这些文件

SVN和大多数其他源代码管理系统将为您提供版本号,以唯一标识文件的特定版本。每次提交新CSV时,此提交都会有自己的修订号

然而

根据使用情况,这可能不是一个好的解决方案。假设您签入了CSV,这在SVN修订号1234上。然后有人将该文件签出,可能会将其发送给其他人等。CSV持有者将无法从CSV中知道该文件的修订版本,因此无法知道他们是否使用了最新版本

就我个人而言,我会在文件名中添加一个版本号,或者在CSV的开始/结束处添加一行,其中包含一个版本号,但是这也取决于您的使用情况

值得深思的是

此外,编辑Diff可能存在问题,我不确定SVN是否支持CSV上的Diff,因此每次您签入时,通过SVN内部,它可能会完全替换旧文件(保留旧文件以供参考)。这可能会迅速占用大量磁盘空间