diff --git a/CHANGELOG.md b/CHANGELOG.md index cfb6b2ab8..7b20a1552 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * jj now bundles a TUI tool to use as the default diff and merge editors. (The previous default was `meld`.) +* `jj split` supports the `--interactive` flag. (This is already the default if + no paths are provided.) + ### Fixed bugs ## [0.9.0] - 2023-09-06 diff --git a/cli/src/commands/mod.rs b/cli/src/commands/mod.rs index 9762ae5e8..a93f5044d 100644 --- a/cli/src/commands/mod.rs +++ b/cli/src/commands/mod.rs @@ -877,10 +877,14 @@ struct DiffeditArgs { /// asked for a description only for the first part. #[derive(clap::Args, Clone, Debug)] struct SplitArgs { + /// Interactively choose which parts to split. This is the default if no + /// paths are provided. + #[arg(long, short)] + interactive: bool, /// The revision to split #[arg(long, short, default_value = "@")] revision: RevisionArg, - /// Put these paths in the first commit and don't run the diff editor + /// Put these paths in the first commit #[arg(value_hint = clap::ValueHint::AnyPath)] paths: Vec, } @@ -3255,7 +3259,7 @@ fn cmd_split(ui: &mut Ui, command: &CommandHelper, args: &SplitArgs) -> Result<( workspace_command.start_transaction(&format!("split commit {}", commit.id().hex())); let end_tree = commit.tree()?; let base_tree = merge_commit_trees(tx.repo(), &commit.parents())?; - let interactive = args.paths.is_empty(); + let interactive = args.interactive || args.paths.is_empty(); let instructions = format!( "\ You are splitting a commit in two: {}