#dvc
Вопрос:
Допустим, я работаю в репо git/dvc. Существует папка data
, содержащая 100 тысяч небольших файлов. Я отслеживаю его с помощью DVC как один элемент, как рекомендовано в документе:
dvc add data
и потому, что, по моему опыту, DVC довольно медленно отслеживает такое количество файлов один за другим.
Я клонирую репозиторий в другом рабочем пространстве, и теперь у меня есть data.dvc
файл локально, но внутри еще нет реальных файлов. Я хочу добавить файл с именем newfile.txt
в data
папку и отслеживать его с помощью DVC. Есть ли способ сделать это, не извлекая все содержимое data
локально ?
То, что я пытался сделать сейчас:
data
Повторное добавление папки:mkdir data mv path/to/newfile.txt data/newfile.txt dvc add data
data.dvc
Файл снова создается из локального состоянияdata
, которое содержит толькоnewfile.txt
содержимое, поэтому это не работает.- Добавление файла в виде одного элемента в
data
папку:dvc add data/newfile.txt
Я получаю :
Cannot add 'data/newfile.txt', because it is overlapping with other DVC tracked output: 'data'. To include 'data/newfile.txt' in 'data', run 'dvc commit data.dvc'
- Использование фиксации dvc, как было предложено
mkdir data mv path/to/newfile.txt data/newfile.txt dvc commit data.dvc
Аналогично, как 1.,
data.dvc
он снова перестраивается из локального состоянияdata
.
Комментарии:
1. ре
DVC is kinda slow when tracking that many files one by one.
Ограничение больше связано с файловой системой. Способ работы DVC заключается в том, что он создает метафайл .dvc для каждого файла/каталога, который вы хотите отслеживать как объект. Для добавления 100 тыс. файлов отдельно требуется управление 100 тыс. метафайлами, что включает в себя множество операций ввода-вывода. Вот почему DVC допускает детализацию в большинстве своих команд, даже если вы отслеживаете целые каталоги, например, вы можетеdvc add data; dvc push data/some/file
Ответ №1:
Я клонирую репозиторий в другом рабочем пространстве, и теперь у меня есть файл data.dvc локально, но внутри еще нет ни одного фактического файла (не
dvc pull
редактировался). Я хочу добавить файл в папку данных и отслеживать его с помощью DVC. Есть ли способ сделать это, не извлекая все содержимое данных локально ?
Интересный вопрос. Я думаю, что есть простой способ сделать это сейчас, потому что в этой другой машины, если ты dvc add data
еще раз, но только один файл в каталоге, видеоконференции, будет думать, что вы удалили все файлы, создать новую резервную копию данных, реж (содержащих только этот новый файл), и обновления .файл DVC соответственно (как вы обнаружили).
Вы можете открыть запрос на функцию в https://github.com/iterative/dvc.org/issues.