From 8b23a45a21ac3f01902379c6a4bdacccfe3771b2 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Sun, 26 Nov 2017 14:15:05 +0200 Subject: [PATCH] RFC: redo reproduce_deps Signed-off-by: Ruslan Kuprieiev --- dvc/command/repro.py | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/dvc/command/repro.py b/dvc/command/repro.py index 2faedc9ca..6997d02df 100644 --- a/dvc/command/repro.py +++ b/dvc/command/repro.py @@ -155,6 +155,23 @@ class ReproChange(object): self.reproduce_data_item() return True + def reproduce_dep(self, path, md5, recursive): + if not self._settings.path_factory.is_data_item(path): + if md5 != file_md5(os.path.join(self._settings.git.git_dir_abs, path))[0]: + self.log_repro_reason('source {} was changed'.format(path)) + return True + return False + + item = self._settings.path_factory.existing_data_item(path) + if recursive: + ReproChange(item, self._cmd_obj, self._recursive, self._force).reproduce() + + if md5 != os.path.basename(item.cache.relative): + self.log_repro_reason('data item {} was changed'.format(path)) + return True + + return False + def reproduce_deps(self, data_item_dvc, recursive): result = False @@ -162,20 +179,7 @@ class ReproChange(object): path = dep[StateFile.PARAM_PATH] md5 = dep[StateFile.PARAM_MD5] - if not self._settings.path_factory.is_data_item(path): - if md5 != file_md5(os.path.join(self._settings.git.git_dir_abs, path))[0]: - self.log_repro_reason('source {} was changed'.format(path)) - result = True - continue - - item = self._settings.path_factory.existing_data_item(path) - if recursive: - change = ReproChange(item, self._cmd_obj, self._recursive, self._force) - if change.reproduce(): - result = True - - if md5 != os.path.basename(item.cache.relative): - self.log_repro_reason('data item {} was changed'.format(path)) + if self.reproduce_dep(path, md5, recursive): result = True return result