run: add to .gitignore on --no-exec (#3729)

This commit is contained in:
Ruslan Kuprieiev
2020-05-04 02:19:56 +03:00
committed by GitHub
parent 505b88afae
commit 76e6ba24f7
3 changed files with 21 additions and 8 deletions
+10 -5
View File
@@ -209,6 +209,15 @@ class BaseOutput(object):
def isfile(self):
return self.remote.isfile(self.path_info)
def ignore(self):
if not self.use_scm_ignore:
return
if self.repo.scm.is_tracked(self.fspath):
raise OutputAlreadyTrackedError(self)
self.repo.scm.ignore(self.fspath)
def save(self):
if not self.exists:
raise self.DoesNotExistError(self)
@@ -219,11 +228,7 @@ class BaseOutput(object):
if self.is_empty:
logger.warning("'{}' is empty.".format(self))
if self.use_scm_ignore:
if self.repo.scm.is_tracked(self.fspath):
raise OutputAlreadyTrackedError(self)
self.repo.scm.ignore(self.fspath)
self.ignore()
if not self.use_cache:
self.info = self.save_info()
+5 -1
View File
@@ -67,10 +67,14 @@ def run(self, fname=None, no_exec=False, **kwargs):
except OutputDuplicationError as exc:
raise OutputDuplicationError(exc.output, set(exc.stages) - {stage})
if not no_exec:
if no_exec:
for out in stage.outs:
out.ignore()
else:
stage.run(
no_commit=kwargs.get("no_commit", False),
ignore_build_cache=kwargs.get("ignore_build_cache", False),
)
dvcfile.dump(stage, update_pipeline=True)
return stage
+6 -2
View File
@@ -30,7 +30,7 @@ from dvc.stage.exceptions import (
from dvc.system import System
from dvc.utils import file_md5
from dvc.utils.stage import load_stage_file
from tests.basic_env import TestDvc
from tests.basic_env import TestDvc, TestDvcGit
class TestRun(TestDvc):
@@ -90,13 +90,17 @@ class TestRunMissingDep(TestDvc):
)
class TestRunNoExec(TestDvc):
class TestRunNoExec(TestDvcGit):
def test(self):
self.dvc.run(
cmd="python {} {} {}".format(self.CODE, self.FOO, "out"),
deps=[self.CODE, self.FOO],
outs=["out"],
no_exec=True,
)
self.assertFalse(os.path.exists("out"))
with open(".gitignore", "r") as fobj:
self.assertEqual(fobj.read(), "/out\n")
class TestRunCircularDependency(TestDvc):