From cb47ac4eaee7afffe060751d73f27b5793714903 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Wed, 1 Nov 2017 01:24:50 +0200 Subject: [PATCH 1/4] repository_change: skip .dvc when collecting timestamps Fixes #277 Signed-off-by: Ruslan Kuprieiev --- dvc/repository_change.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dvc/repository_change.py b/dvc/repository_change.py index c34916a92..d2d135981 100644 --- a/dvc/repository_change.py +++ b/dvc/repository_change.py @@ -116,7 +116,10 @@ class RepositoryChange(object): def data_file_timesteps(self): res = set() - for root, dirs, files in os.walk('.'): + for root, dirs, files in os.walk(self._settings.git.git_dir_abs): + if root.startswith(os.path.join(self._settings.git.git_dir_abs, ConfigI.CONFIG_DIR)): + continue + for file in files: filename = os.path.join(root, file) if os.path.exists(filename): From fad091e9a6dc3647b2f7a264975f78952bb10623 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Wed, 1 Nov 2017 02:28:12 +0200 Subject: [PATCH 2/4] factory: don't forget to import Logger Signed-off-by: Ruslan Kuprieiev --- dvc/path/factory.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dvc/path/factory.py b/dvc/path/factory.py index efae5bf99..9dc3164fb 100644 --- a/dvc/path/factory.py +++ b/dvc/path/factory.py @@ -4,7 +4,7 @@ from dvc.path.data_item import DataItem, DataItemError, DataDirError from dvc.path.path import Path from dvc.path.stated_data_item import StatedDataItem from dvc.system import System - +from dvc.logger import Logger class PathFactory(object): def __init__(self, git, config): From 2be87f57fde301c456046d30b200c42842f30d85 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Wed, 1 Nov 2017 03:54:05 +0200 Subject: [PATCH 3/4] data: set read-only flag Fixes #278 Fixes #277 Fixes #276 Signed-off-by: Ruslan Kuprieiev --- dvc/path/data_item.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dvc/path/data_item.py b/dvc/path/data_item.py index de93fe5ff..6a40c0ff1 100644 --- a/dvc/path/data_item.py +++ b/dvc/path/data_item.py @@ -1,4 +1,5 @@ import os +import stat import shutil from dvc.path.path import Path @@ -104,6 +105,6 @@ class DataItem(object): md5 = file_md5(self.data.relative)[0] self._cache_file = os.path.join(self.cache_dir, md5) self._git.modify_gitignore([self.data.relative]) - if os.path.isfile(self.cache.relative): - return - System.hardlink(self.data.relative, self.cache.relative) + if not os.path.isfile(self.cache.relative): + System.hardlink(self.data.relative, self.cache.relative) + os.chmod(self.data.relative, stat.S_IREAD) From b1bd7a9543dd0736bee81aba8d993883257ad724 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Wed, 1 Nov 2017 03:56:27 +0200 Subject: [PATCH 4/4] dvc: don't forget to import ConfigI Signed-off-by: Ruslan Kuprieiev --- dvc/repository_change.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dvc/repository_change.py b/dvc/repository_change.py index d2d135981..f932b6554 100644 --- a/dvc/repository_change.py +++ b/dvc/repository_change.py @@ -7,7 +7,7 @@ from dvc.logger import Logger from dvc.path.data_item import DataDirError, DataItemInStatusDirError from dvc.path.stated_data_item import StatedDataItem from dvc.utils import cached_property - +from dvc.config import ConfigI class RepositoryChangeError(DvcException): def __init__(self, msg):