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 Sep 25, 2023
1 parent 77f61fc commit e618097
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 @@ -38,6 +38,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 parent revision.

* `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 making a partial commit from the changes in: {}
The diff initially shows all changes. Adjust the right side until it shows the
contents you want for the new commit. The remainder will stay in the working
copy.
",
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 e618097

Please sign in to comment.