Git +大数据集?

bk.*_*bk. 20 git version-control dataset

我们经常处理一个项目,我们已经处理了一个大型数据集(例如,每个1GB的少量文件),并且正在编写代码来分析它.

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

我想要存储库中的数据:

  • 当用户首次克隆存储库时,数据应该随附.
  • 数据不是100%只读; 现在,然后更正数据点,或发生轻微的格式更改.如果数据发生微小变化,应在下次结账时通知用户.

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

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

我似乎需要一个带有代码主存储库的设置和一个数据辅助存储库.是否可以在git或POSIX中优雅地实现这一点的任何建议或技巧?我所想到的一切都是这样或那样的.

Ada*_*ruk 15

使用子模块将您的巨型文件与源代码隔离开来.更多内容如下:

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

这些例子讨论了库,但这适用于大型膨胀的东西,如用于测试的数据样本,图像,电影等.

您应该能够在开发过程中飞行,只有在需要查看新版本的巨型数据时才会暂停.

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

通过获取更多克隆数据来解决您的问题:如果您的git实现支持您的操作系统上的硬链接,这应该是轻而易举的.

您的巨型数据集的性质也在起作用.如果你改变它的一部分,你是在改变巨大的blob还是几百万的几行?这应该确定VCS在为其播放通知机制方面的有效性.

希望这可以帮助.

  • 链接已过时.我认为现在应该是http://git-scm.com/book/en/v2/Git-Tools-Submodules. (2认同)

adl*_*adl 9

这听起来像尝试git-annex的完美场合:

git-annex允许使用git管理文件,而无需将文件内容检入git.虽然这看似矛盾,但是当处理大于git的文件当前可以轻松处理时,无论是由于内存限制,校验和时间还是磁盘空间,它都很有用.