Skip to content

Commit

Permalink
command: add --interactive flag to jj commit
Browse files Browse the repository at this point in the history
  • Loading branch information
arxanas committed Oct 1, 2023
1 parent 82880b9 commit f156f2a
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
22 changes: 21 additions & 1 deletion cli/src/commands/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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>,
Expand Down Expand Up @@ -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!(
Expand Down

0 comments on commit f156f2a

Please sign in to comment.