From 3bc0b9728bda1de3b3bb4b1ababe10d6a07551bc Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Wed, 6 Feb 2019 20:39:31 +0200 Subject: [PATCH] run: introduce --no-commit Signed-off-by: Ruslan Kuprieiev --- dvc/command/run.py | 7 +++++++ dvc/repo/run.py | 3 ++- dvc/stage.py | 5 +++-- tests/test_run.py | 11 +++++++++++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/dvc/command/run.py b/dvc/command/run.py index cae569654..8222cbcda 100644 --- a/dvc/command/run.py +++ b/dvc/command/run.py @@ -42,6 +42,7 @@ class CmdRun(CmdBase): overwrite=overwrite, ignore_build_cache=self.args.ignore_build_cache, remove_outs=self.args.remove_outs, + no_commit=self.args.no_commit, ) except DvcException: logger.error("failed to run command") @@ -167,6 +168,12 @@ def add_parser(subparsers, parent_parser): default=False, help="Remove outputs before running the command.", ) + run_parser.add_argument( + "--no-commit", + action="store_true", + default=False, + help="Don't put files/directories into cache.", + ) run_parser.add_argument( "command", nargs=argparse.REMAINDER, help="Command to execute." ) diff --git a/dvc/repo/run.py b/dvc/repo/run.py index a2c142655..b782655cf 100644 --- a/dvc/repo/run.py +++ b/dvc/repo/run.py @@ -15,6 +15,7 @@ def run( overwrite=False, ignore_build_cache=False, remove_outs=False, + no_commit=False, ): from dvc.stage import Stage @@ -53,7 +54,7 @@ def run( self.files_to_git_add = [] with self.state: if not no_exec: - stage.run() + stage.run(no_commit=no_commit) stage.dump() diff --git a/dvc/stage.py b/dvc/stage.py index 44c88d2d2..3f9a77b90 100644 --- a/dvc/stage.py +++ b/dvc/stage.py @@ -589,7 +589,7 @@ class Stage(object): if p.returncode != 0: raise StageCmdFailedError(self) - def run(self, dry=False, resume=False): + def run(self, dry=False, resume=False, no_commit=False): if self.locked: logger.info( "Verifying outputs in locked stage '{stage}'".format( @@ -629,7 +629,8 @@ class Stage(object): if not dry: self.save() - self.commit() + if not no_commit: + self.commit() def check_missing_outputs(self): paths = [ diff --git a/tests/test_run.py b/tests/test_run.py index 97d979f28..ed48b9db1 100644 --- a/tests/test_run.py +++ b/tests/test_run.py @@ -628,3 +628,14 @@ class TestRunDeterministicChangedCmd(TestRunDeterministicBase): self.cmd += " arg" with self.assertRaises(StageFileAlreadyExistsError): self._run() + + +class TestRunNoCommit(TestDvc): + def test(self): + fname = "test" + ret = main( + ["run", "-o", "foo", "--no-commit", "echo", "test", ">", fname] + ) + self.assertEqual(ret, 0) + self.assertTrue(os.path.isfile(fname)) + self.assertEqual(len(os.listdir(self.dvc.cache.local.cache_dir)), 0)