Git + 大数据集?

标签 git version-control dataset

我们经常处理一个项目,在这个项目中,我们收到了一个大型数据集(例如,一些文件,每个文件大小为 1GB),并且我们正在编写代码来分析它。

所有分析代码都在 Git 中,因此每个人都可以检查进出我们中央存储库的更改。但是如何处理代码正在处理的数据集呢?

我想要存储库中的数据:

  • 当用户首次克隆存储库时,数据应随附。
  • 数据不是 100% 只读的;有时会更正数据点,或者发生较小的格式更改。如果数据发生细微变化,应在下次 checkout 时通知用户。

但是,我不想要git仓库中的数据:

  • git 克隆一个备用副本(因此我的主目录中有两个版本)将提取我已有的几 GB 数据。我宁愿将其放在固定位置 [设置数据必须在 ~/data 中的规则] 或根据需要添加链接。
  • 对于存储库中的数据,可能无法复制到拇指驱动器,当我只处理一百行代码时,这很烦人。
  • 如果错误的数据点得到修复,我将永远不会再查看错误的版本。可以在纯文本文件中或由提供数据的人(或根本不提供)跟踪对数据集的更改。

看来我需要一个包含代码主存储库和数据辅助存储库的设置。在 git 或 POSIX 中优雅地实现这个的任何建议或技巧?我所想到的一切在某种程度上都是一团糟。

最佳答案

使用子模块将您的巨型文件与您的源代码隔离开来。更多相关信息:

http://git-scm.com/book/en/v2/Git-Tools-Submodules

这些示例讨论的是库,但这适用于大型臃肿的东西,例如用于测试的数据样本、图像、电影等。

您应该能够在开发过程中飞行,只有在您需要查看新版本的巨型数据时才会在这里和那里停下来。

有时甚至不值得跟踪这些事情的变化。

要解决获取更多数据克隆的问题:如果您的 git 实现支持操作系统上的硬链接(hard link),这应该是一件轻而易举的事。

您的庞大数据集的性质也在发挥作用。如果你改变其中的一些,你是在改变巨大的 Blob 还是数百万集中的几行?这应该决定了 VCS 在为其播放通知机制方面的有效性。

希望这对您有所帮助。

关于Git + 大数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6268628/

相关文章:

git - 理解 git rev-list

git - 解决 git 与管道命令的冲突

mysql - 需要 : Version control - install with only ftp/mysql access

api - 如何将太大的 Kaggle 数据集的一个选定文件从 Kaggle 加载到 Colab 中

python - 构建我自己的数据集以与 Tensorflow 或 Keras 一起使用

git 子模块 merge 冲突 : how to visualize?

git - 如何使非程序员更容易使用 Git 子模块?

svn - 大型二进制文件和 >1TB 存储库的版本控制?

visual-studio-2008 - 为 Visual Studio 2008 推荐的 TDD/Agile/Source Control 插件

c# - 添加其他数据集以显示组合图