Merge pull request #18 from dmpetrov/windows_symlink

Close #17
This commit is contained in:
Dmitry Petrov
2017-04-11 22:15:38 -07:00
committed by GitHub
3 changed files with 19 additions and 21 deletions
+9 -7
View File
@@ -31,7 +31,6 @@ class CmdRepro(CmdRun):
parser.add_argument('target', metavar='', help='Data item to reproduce', nargs='*')
pass
@property
def is_reproducible(self):
return True
@@ -78,7 +77,8 @@ class CmdRepro(CmdRun):
for data_item in data_item_list:
try:
repro_change = ReproChange(data_item, self)
target_commit = self.git.get_target_commit(data_item.data.relative)
repro_change = ReproChange(data_item, self, target_commit)
if repro_change.reproduce():
changed = True
Logger.info(u'Data item "{}" was reproduced.'.format(
@@ -103,7 +103,7 @@ class CmdRepro(CmdRun):
class ReproChange(object):
def __init__(self, data_item, cmd_obj):
def __init__(self, data_item, cmd_obj, target_commit):
self._data_item = data_item
self.git = cmd_obj.git
self._cmd_obj = cmd_obj
@@ -111,6 +111,8 @@ class ReproChange(object):
cmd_obj._code = self.state.code_dependencies
self._target_commit = target_commit
argv = self.state.norm_argv
if not argv:
@@ -156,13 +158,13 @@ class ReproChange(object):
were_input_files_changed = False
for data_item in self.dependencies:
change = ReproChange(data_item, self._cmd_obj)
change = ReproChange(data_item, self._cmd_obj, self._target_commit)
if change.reproduce(force):
were_input_files_changed = True
was_source_code_changed = self.git.were_files_changed(self._data_item.data.relative,
self.state.code_dependencies + self.state.input_files,
self.cmd_obj.settings.path_factory)
was_source_code_changed = self.git.were_files_changed(self.state.code_dependencies + self.state.input_files,
self.cmd_obj.settings.path_factory,
self._target_commit)
if was_source_code_changed:
Logger.debug('Dependencies were changed for "{}"'.format(self._data_item.data.dvc))
+10 -8
View File
@@ -157,18 +157,15 @@ class GitWrapper(GitWrapperI):
return results
def were_files_changed(self, file, code_dependencies, path_factory):
Logger.debug('[Git] Identify changes. Commands: {} {} && {}'.format(
'git log -1 --pretty=format:"%h"', file, 'git diff --name-only HEAD *'))
def were_files_changed(self, code_dependencies, path_factory, target_commit):
Logger.debug('[Git] Identify changes. Command: git diff --name-only HEAD {}'.format(
target_commit))
commit = Executor.exec_cmd_only_success(['git', 'log', '-1', '--pretty=format:"%h"', file])
commit = commit.strip('"')
changed_files = Executor.exec_cmd_only_success(['git', 'diff', '--name-only', 'HEAD', commit])
changed_files = Executor.exec_cmd_only_success(['git', 'diff', '--name-only', 'HEAD', target_commit])
changed_files = changed_files.strip('"')
Logger.debug('[Git] Identify changes. Success. Changed files: {}'.format(
changed_files.replace('\n', ', ')))
changed_files.replace('\n', ', ')))
code_files, code_dirs = self.separate_dependency_files_and_dirs(code_dependencies)
code_files_set = set([path_factory.path(x).dvc for x in code_files])
@@ -182,6 +179,11 @@ class GitWrapper(GitWrapperI):
return False
@staticmethod
def get_target_commit(file):
commit = Executor.exec_cmd_only_success(['git', 'log', '-1', '--pretty=format:"%h"', file])
return commit.strip('"')
def separate_dependency_files_and_dirs(self, code_dependencies):
code_files = []
code_dirs = []
-6
View File
@@ -12,11 +12,6 @@ from dvc.system import System
class Runtime(object):
CONFIG = 'dvc.conf'
@staticmethod
def symlink_setup():
if os.name != 'nt':
return
@staticmethod
def conf_file_path(git_dir):
return System.realpath(os.path.join(git_dir, Runtime.CONFIG))
@@ -30,7 +25,6 @@ class Runtime(object):
"""
try:
Runtime.symlink_setup()
runtime_git = GitWrapper()
if parse_config: