forked from mirrors/jj
command: add --interactive
flag to jj commit
This commit is contained in:
parent
946a6e0bf7
commit
d58664d40c
2 changed files with 23 additions and 1 deletions
|
@ -44,6 +44,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
* `jj commit` accepts an optional list of paths indicating a subset of files to
|
||||
include in the first commit
|
||||
|
||||
* `jj commit` accepts the `--interactive` flag.
|
||||
|
||||
### Fixed bugs
|
||||
|
||||
## [0.9.0] - 2023-09-06
|
||||
|
|
|
@ -469,6 +469,9 @@ struct DescribeArgs {
|
|||
#[derive(clap::Args, Clone, Debug)]
|
||||
#[command(visible_aliases=&["ci"])]
|
||||
struct CommitArgs {
|
||||
/// Interactively choose which changes to include in the first commit
|
||||
#[arg(short, long)]
|
||||
interactive: bool,
|
||||
/// The change description to use (don't open editor)
|
||||
#[arg(long = "message", short, value_name = "MESSAGE")]
|
||||
message_paragraphs: Vec<String>,
|
||||
|
@ -2141,7 +2144,24 @@ fn cmd_commit(ui: &mut Ui, command: &CommandHelper, args: &CommitArgs) -> Result
|
|||
let matcher = workspace_command.matcher_from_values(&args.paths)?;
|
||||
let mut tx = workspace_command.start_transaction(&format!("commit {}", commit.id().hex()));
|
||||
let base_tree = merge_commit_trees(tx.repo(), &commit.parents())?;
|
||||
let tree_id = tx.select_diff(ui, &base_tree, &commit.tree()?, matcher.as_ref(), "", false)?;
|
||||
let instructions = format!(
|
||||
"\
|
||||
You are splitting the working-copy commit: {}
|
||||
|
||||
The diff initially shows all changes. Adjust the right side until it shows the
|
||||
contents you want for the first commit. The remainder will be included in the
|
||||
new working-copy commit.
|
||||
",
|
||||
tx.format_commit_summary(&commit)
|
||||
);
|
||||
let tree_id = tx.select_diff(
|
||||
ui,
|
||||
&base_tree,
|
||||
&commit.tree()?,
|
||||
matcher.as_ref(),
|
||||
&instructions,
|
||||
args.interactive,
|
||||
)?;
|
||||
let middle_tree = tx.repo().store().get_root_tree(&tree_id)?;
|
||||
if !args.paths.is_empty() && middle_tree.id() == base_tree.id() {
|
||||
writeln!(
|
||||
|
|
Loading…
Reference in a new issue