diff --git a/CHANGELOG.md b/CHANGELOG.md index 677c8807f..e058dc010 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * The [standard `$NO_COLOR` environment variable](https://no-color.org/) is now respected. +* `jj new` now lets you specify a description with `--message/-m`. + ## [0.3.3] - 2022-03-16 No changes, only trying to get the automated build to work. diff --git a/src/commands.rs b/src/commands.rs index 4fa63a6b0..6563538b5 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -1148,6 +1148,9 @@ struct NewArgs { /// out. #[clap(default_value = "@")] revision: String, + /// The change description to use + #[clap(long, short, default_value = "")] + message: String, } /// Move changes from one revision into another @@ -2942,7 +2945,8 @@ fn cmd_new(ui: &mut Ui, command: &CommandHelper, args: &NewArgs) -> Result<(), C repo.store(), parent.id().clone(), parent.tree().id().clone(), - ); + ) + .set_description(args.message.clone()); let mut tx = workspace_command.start_transaction("new empty commit"); let mut_repo = tx.mut_repo(); let new_commit = commit_builder.write_to_repo(mut_repo); diff --git a/tests/test_new.rs b/tests/test_new.rs new file mode 100644 index 000000000..115874a95 --- /dev/null +++ b/tests/test_new.rs @@ -0,0 +1,36 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use jujutsu::testutils::{get_stdout_string, TestEnvironment}; + +#[test] +fn test_new_with_message() { + let test_env = TestEnvironment::default(); + test_env.jj_cmd_success(test_env.env_root(), &["init", "repo", "--git"]); + let repo_path = test_env.env_root().join("repo"); + + std::fs::write(repo_path.join("file"), "contents").unwrap(); + test_env.jj_cmd_success(&repo_path, &["describe", "-m", "add a file"]); + test_env.jj_cmd_success(&repo_path, &["new", "-m", "a new commit"]); + + let assert = test_env + .jj_cmd(&repo_path, &["log", "-T", "commit_id \" \" description"]) + .assert() + .success(); + insta::assert_snapshot!(get_stdout_string(&assert), @r###" + @ 588665964c5aaf306d9617095c8a9c4447cdb30c a new commit + o f0f3ab56bfa927e3a65c2ac9a513693d438e271b add a file + o 0000000000000000000000000000000000000000 + "###); +}