Version control 控制外部依赖项的跟踪版本

Version control 控制外部依赖项的跟踪版本,version-control,dvc,Version Control,Dvc,我正在尝试为具有不同标记版本的数据集的机器学习数据建立一个DVC存储库。我是这样做的: 数据驱动器上的“$cd/raid/ml#u data”文件夹 $git init $dvc init $[添加数据] $[提交给dvc,git] $git标签-1.0.0 $[添加或更改数据] $[提交给dvc,git] $git标签-1.1.0 我有多个项目,每个项目都需要引用此数据集的某个版本。问题是我不知道如何设置这些项目来引用特定的版本。我可以通过以下方式跟踪回购的头: $cd~/my_proj#与

我正在尝试为具有不同标记版本的数据集的机器学习数据建立一个DVC存储库。我是这样做的:

数据驱动器上的“
$cd/raid/ml#u data”文件夹
$git init
$dvc init
$[添加数据]
$[提交给dvc,git]
$git标签-1.0.0
$[添加或更改数据]
$[提交给dvc,git]
$git标签-1.1.0
我有多个项目,每个项目都需要引用此数据集的某个版本。问题是我不知道如何设置这些项目来引用特定的版本。我可以通过以下方式跟踪回购的

$cd~/my_proj#与遥控器不同的驱动器
$mkdir数据
$git init
$dvc init
$dvc remote add-d local/raid/ml#u data#将远程添加到我的数据驱动器上
$dvc cache dir/raid/ml_data/.dvc/cache#告诉dvc使用远程缓存
$dvc结帐
$dvc运行—外部-d/raid/ml_数据-o数据/cp-r/raid/ml_数据
这将获取数据集的最新版本,并将其符号链接到我的
data
文件夹中,但是如果我希望一些项目使用
1.0.0
版本,而一些项目使用
1.1.0
版本,或者其他版本,该怎么办?或者,如果我将数据集更新为
2.0.0
,但不希望现有项目必须跟踪
HEAD
,而是保留设置它们的版本


对我来说,重要的是不要创建大量数据集的本地副本,因为
/home
驱动器比
/raid
驱动器小得多,而且其中一些数据集很大。

我想您正在寻找命令集

在您的特定情况下,
dvc导入
是有意义的:

$ dvc import /raid/ml_data data
如果要获取最新版本(HEAD)。然后,您将能够使用
dvc update
命令对其进行更新(例如,如果发布了2.0.0)

如果您想将其“修复”到特定版本

避免复制 还请确保为第二个项目设置了
符号链接
,如中所述:

(有配置修饰符
--global
--local
--system
,可以一次为每个人或仅为一个项目设置此设置,等等)

查看详细说明



总的来说,这是一个很好的设置,看起来你几乎什么都做对了。请不要犹豫,在这里继续跟进和/或提出其他问题-我们将帮助您解决这些问题。

太好了,谢谢。如何确保它在主目录中为项目使用符号链接?如果我只是使用您的第一个命令,我会创建一个本地副本,该副本链接到raid驱动器上的“远程”。@Engineero请看一看,我添加了一些附加信息和相关文档的链接。
$ dvc import /raid/ml_data data --rev 1.0.0
$ dvc config cache.type reflink,hardlink,symlink,copy