如何干净地处理存储库中的源代码和数据

Ric*_*ich 9 mercurial dvcs repository large-files

我正在开发一个由一些Python脚本(最多1M)和一个相对较大的数据集(1.5 GB)组成的协作科学项目.数据集与python脚本紧密相关,因为数据集本身就是科学,脚本是它们的简单接口.

我正在使用Mercurial作为我的源代码控制工具,但我不清楚一个很好的机制来定义存储库.从逻辑上讲,将这些捆绑在一起是有意义的,这样通过克隆存储库,您将获得整个包.另一方面,我关注处理大量数据的源代码控制工具.

有没有一个干净的机制来处理这个?

Mar*_*ler 7

如果数据文件很少变化并且您通常需要所有数据文件,那么只需将它们添加到Mercurial并完成它.你的所有克隆都是1.5 GB,但这就是它必须与这些数据量相关的方式.

如果数据是二进制数据并经常更改,那么您可能会尝试避免下载所有旧数据.一种方法是使用Subversion子存储库.你将有一个.hgsub文件

data = [svn]http://svn.some.edu/me/ourdata
Run Code Online (Sandbox Code Playgroud)

它告诉Mercurial svn checkout从右侧URL 创建一个并将Subversion工作副本放入Mercurial克隆中data.Mercurial将为您调用一个额外的文件.hgsubstate,在该文件中它会记录SVN修订号以结帐任何给定的Mercurial变更集.通过像这样使用Subversion,您最终只能获得计算机上最新版本的数据,但Mercurial将知道如何在需要时获取旧版本的数据.如果你沿着这条路走下去,请参阅这个子库的指南.