一般情况下,在基于R语言的项目中,我们会把所有数据和代码放在一个文件夹下,并且全部同步到GitHub上。团队里其他人想要重复这个项目的话,直接从GitHub上clone该项目仓库到自己电脑上,即可运行。对于项目负责人本人而言,其结构如下:

但是当原始数据太大的时候,直接上传到GitHub上比较麻烦,因此我之前是通过DropBox等云盘分享原始数据,通过GitHub共享其他项目文件(主要是代码),相当于在本地电脑上,所有文件都储存在一个文件夹上,但是在云端,数据和代码分别存储。这时候,结构如下图。这种情况下,如果别人要重复该项目,除了需要clone我GitHub上的云端仓库之外,还要下载我DropBox中的数据,并且把该数据放到本地的指定路径下。虽然后者(即下载数据步骤)也可以通过R代码实现,但是还是有点麻烦。

再进一步,当多个项目共用一个原始数据的时候,这个结构图就变成了下图的样子。相当于在本地电脑上,要同时存储两份相同的原始数据。当数据量比较大的时候,这样就比较费本地的存储空间。

因此,想请教大家:在原始数据较大、且多个项目共用一个原始数据的团队合作项目中,如何组织本地及云端的文件夹比较方便呢?主要需求是:
(1)所有文件尽量放在一处。上述例子中,在云端,数据和代码分别存放在两个不同的地方,不符合该需求。
(2)节省本地空间。上述例子中,当本地同时运行项目1和项目2时,需要在本地项目1和项目2文件夹中,分别存储一份相同的原始数据拷贝,不符合该需求。
(3)提高同步速度。上述例子中,虽然项目1和项目2共用一份原始数据,但是实际上他们用的是不同的子集。我目前的方案中,是将整个原始数据分别下载到项目1和项目2的文件夹中,然后再进行数据处理(如取子集)。由于原始数据较大,下载过程非常耗时。好在原始数据通常不会变化,因此下载一次即可。但是,是否有更好的办法呢?
当然,上面这些需求可能是鱼和熊掌不可兼得的。此外,个人觉得,这个问题的解决方案可以包含流程设计和技术两个维度。前者指文件夹结构和同步步骤应该如何设计等,后者则是指有哪些工具可以帮助实现这种设计。如果有任何想法,都欢迎交流呀。