Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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
Mercurial 如何干净地处理存储库中的源代码和数据_Mercurial_Repository_Dvcs_Large Files - Fatal编程技术网

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

Mercurial 如何干净地处理存储库中的源代码和数据,mercurial,repository,dvcs,large-files,Mercurial,Repository,Dvcs,Large Files,我正在从事一个协作科学项目,该项目由一些Python脚本(最大1M)和一个相对较大的数据集(1.5GB)组成。数据集与python脚本紧密相连,因为数据集本身就是科学,而脚本是它们的简单接口 我使用Mercurial作为我的源代码控制工具,但我不清楚定义存储库的好机制。从逻辑上讲,将这些信息捆绑在一起是有意义的,这样通过克隆存储库,您就可以得到整个包。另一方面,我关心的是处理大量数据的源代码管理工具 是否有一个干净的机制来处理这个问题?我的第一个倾向是将python脚本分离到它们自己的存储库中,

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

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


是否有一个干净的机制来处理这个问题?

我的第一个倾向是将python脚本分离到它们自己的存储库中,但我确实需要更多的域信息来进行“正确”的调用


一方面,如果将创建新的数据集,那么您希望一组核心工具能够处理所有这些数据集,对吗?但我也可以看到新的数据集如何引入脚本以前可能没有处理过的情况。。。虽然在理想情况下,您可能希望脚本以通用方式编写,以便能够处理未来数据和现有数据集???

如果数据文件很少更改,并且您通常需要所有数据文件,那么只需将它们添加到Mercurial中即可。您的所有克隆将为1.5 GB,但这正是数据量所必须的方式

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

data = [svn]http://svn.some.edu/me/ourdata

它告诉Mercurial从右侧URL进行
svn签出
,并将Subversion工作副本作为
数据
放入Mercurial克隆中。Mercurial将为您维护一个名为
.hgsubstate
的附加文件,其中记录SVN修订号,以便签出任何给定的Mercurial变更集。通过像这样使用Subversion,您的机器上只能得到最新版本的数据,但Mercurial将知道如何在需要时获得较旧版本的数据。请看你是否走这条路。

有一个关于大二进制文件的问题。但是@MartinGeisler的提议是一个非常好的新选择。

一般来说,科学家们会为我手中的每个数据集推出一个新工具。脚本相对较轻,并且与每个数据集的怪癖紧密相关。对我来说,定制一个小脚本比强制其他人使用数据交换协议更容易。