diff --git a/dvc/repo/__init__.py b/dvc/repo/__init__.py index 7f1653be2..24ad3ea00 100644 --- a/dvc/repo/__init__.py +++ b/dvc/repo/__init__.py @@ -1,6 +1,7 @@ from __future__ import unicode_literals import os + import dvc.prompt as prompt import dvc.logger as logger diff --git a/dvc/repo/add.py b/dvc/repo/add.py index 2a7182b75..af1234ff7 100644 --- a/dvc/repo/add.py +++ b/dvc/repo/add.py @@ -1,6 +1,6 @@ import os -from dvc.scm import scm_context +from dvc.repo.scm_context import scm_context from dvc.stage import Stage from dvc.utils import walk_files from dvc.exceptions import RecursiveAddingWhileUsingFilename diff --git a/dvc/repo/imp.py b/dvc/repo/imp.py index fc4c2acdf..e317eb008 100644 --- a/dvc/repo/imp.py +++ b/dvc/repo/imp.py @@ -1,4 +1,4 @@ -from dvc.scm import scm_context +from dvc.repo.scm_context import scm_context @scm_context diff --git a/dvc/repo/move.py b/dvc/repo/move.py index 360532ed9..9240880a7 100644 --- a/dvc/repo/move.py +++ b/dvc/repo/move.py @@ -1,7 +1,7 @@ import os from dvc.exceptions import MoveNotDataSourceError -from dvc.scm import scm_context +from dvc.repo.scm_context import scm_context def _expand_target_path(from_path, to_path): diff --git a/dvc/repo/reproduce.py b/dvc/repo/reproduce.py index 762af2275..83b1f85e4 100644 --- a/dvc/repo/reproduce.py +++ b/dvc/repo/reproduce.py @@ -4,7 +4,7 @@ import os import dvc.logger as logger from dvc.exceptions import ReproductionError -from dvc.scm import scm_context +from dvc.repo.scm_context import scm_context def _reproduce_stage(stages, node, force, dry, interactive, no_commit): diff --git a/dvc/repo/run.py b/dvc/repo/run.py index 889310dfb..24cc8283d 100644 --- a/dvc/repo/run.py +++ b/dvc/repo/run.py @@ -1,6 +1,6 @@ from __future__ import unicode_literals -from dvc.scm import scm_context +from dvc.repo.scm_context import scm_context @scm_context diff --git a/dvc/repo/scm_context.py b/dvc/repo/scm_context.py new file mode 100644 index 000000000..583a8b3f8 --- /dev/null +++ b/dvc/repo/scm_context.py @@ -0,0 +1,12 @@ +def scm_context(method): + def run(repo, *args, **kw): + try: + result = method(repo, *args, **kw) + repo.scm.reset_ignores() + repo.scm.remind_to_track() + return result + except Exception as e: + repo.scm.cleanup_ignores() + raise e + + return run diff --git a/dvc/scm/__init__.py b/dvc/scm/__init__.py index c5f8d20d7..5a6347fb3 100644 --- a/dvc/scm/__init__.py +++ b/dvc/scm/__init__.py @@ -5,8 +5,6 @@ from __future__ import unicode_literals from dvc.scm.base import Base from dvc.scm.git import Git -import dvc - # just a sugar to point that this is an actual implementation for a dvc # project under no SCM control @@ -29,19 +27,3 @@ def SCM(root_dir, repo=None): # pylint: disable=invalid-name return Git(root_dir, repo=repo) return NoSCM(root_dir, repo=repo) - - -def scm_context(method): - def run(*args, **kw): - repo = args[0] - assert isinstance(repo, dvc.repo.Repo) - try: - result = method(*args, **kw) - repo.scm.reset_ignores() - repo.scm.remind_to_track() - return result - except Exception as e: - repo.scm.cleanup_ignores() - raise e - - return run diff --git a/tests/unit/scm/test_scm.py b/tests/unit/scm/test_scm.py index 4a7ede011..484c6f396 100644 --- a/tests/unit/scm/test_scm.py +++ b/tests/unit/scm/test_scm.py @@ -1,5 +1,6 @@ from dvc.repo import Repo -from dvc.scm import scm_context, NoSCM +from dvc.repo.scm_context import scm_context +from dvc.scm import NoSCM from unittest import TestCase import mock