exp save: Support --message.

Custom commit message to use when committing the experiment.

Part of #8870
This commit is contained in:
David de la Iglesia Castro
2023-05-08 20:08:47 +02:00
parent c74dc20b97
commit aa517bc90e
5 changed files with 23 additions and 2 deletions
+8
View File
@@ -16,6 +16,7 @@ class CmdExperimentsSave(CmdBase):
name=self.args.name,
force=self.args.force,
include_untracked=self.args.include_untracked,
message=self.args.message,
)
except DvcException:
logger.exception("failed to save experiment")
@@ -75,4 +76,11 @@ def add_parser(experiments_subparsers, parent_parser):
help="List of untracked paths to include in the experiment.",
metavar="<path>",
)
save_parser.add_argument(
"-M",
"--message",
type=str,
default=None,
help="Custom commit message to use when committing the experiment.",
)
save_parser.set_defaults(func=CmdExperimentsSave)
+2
View File
@@ -277,6 +277,7 @@ class BaseExecutor(ABC):
info: "ExecutorInfo",
force: bool = False,
include_untracked: Optional[List[str]] = None,
message: Optional[str] = None,
) -> ExecutorResult:
from dvc.dvcfile import LOCK_FILE
from dvc.repo import Repo
@@ -308,6 +309,7 @@ class BaseExecutor(ABC):
exp_hash,
exp_name=info.name,
force=force,
message=message,
)
ref: Optional[str] = dvc.scm.get_ref(EXEC_BRANCH, follow=False)
exp_ref = ExpRefInfo.from_ref(ref) if ref else None
+5 -1
View File
@@ -16,6 +16,7 @@ def save(
name: Optional[str] = None,
force: bool = False,
include_untracked: Optional[List[str]] = None,
message: Optional[str] = None,
) -> Optional[str]:
"""Save the current workspace status as an experiment.
@@ -29,7 +30,10 @@ def save(
try:
save_result = executor.save(
executor.info, force=force, include_untracked=include_untracked
executor.info,
force=force,
include_untracked=include_untracked,
message=message,
)
result = queue.collect_executor(repo.experiments, executor, save_result)
finally:
+7
View File
@@ -153,3 +153,10 @@ def test_untracked_dvclock_is_included_in_exp(tmp_dir, scm, dvc):
exp = dvc.experiments.save()
fs = scm.get_fs(exp)
assert fs.exists("dvc.lock")
def test_exp_save_custom_message(tmp_dir, dvc, scm):
setup_stage(tmp_dir, dvc, scm)
exp = dvc.experiments.save(message="custom commit message")
assert scm.gitpython.repo.commit(exp).message == "custom commit message"
+1 -1
View File
@@ -628,7 +628,7 @@ def test_experiments_save(dvc, scm, mocker):
assert cmd.run() == 0
m.assert_called_once_with(
cmd.repo, name="exp-name", force=True, include_untracked=[]
cmd.repo, name="exp-name", force=True, include_untracked=[], message=None
)