mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-10 07:18:27 +01:00
run: add to .gitignore on --no-exec (#3729)
This commit is contained in:
+10
-5
@@ -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
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user