mirror of
https://github.com/martinvonz/jj.git
synced 2024-12-26 14:00:51 +00:00
cli: add a command for listing branches
This commit is contained in:
parent
40a260a37f
commit
10b2e25c30
1 changed files with 49 additions and 0 deletions
|
@ -732,6 +732,7 @@ fn get_app<'a, 'b>() -> App<'a, 'b> {
|
|||
.arg(Arg::with_name("allow-backwards").long("allow-backwards"))
|
||||
.arg(Arg::with_name("delete"))
|
||||
.arg(Arg::with_name("name").index(1));
|
||||
let branches_command = SubCommand::with_name("branches").about("List branches");
|
||||
let evolve_command =
|
||||
SubCommand::with_name("evolve").about("Resolve problems with the repo's meta-history");
|
||||
let operation_command = SubCommand::with_name("operation")
|
||||
|
@ -889,6 +890,7 @@ fn get_app<'a, 'b>() -> App<'a, 'b> {
|
|||
.subcommand(rebase_command)
|
||||
.subcommand(backout_command)
|
||||
.subcommand(branch_command)
|
||||
.subcommand(branches_command)
|
||||
.subcommand(evolve_command)
|
||||
.subcommand(operation_command)
|
||||
.subcommand(git_command)
|
||||
|
@ -2117,6 +2119,51 @@ fn cmd_branch(
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn cmd_branches(
|
||||
ui: &mut Ui,
|
||||
command: &CommandHelper,
|
||||
_sub_matches: &ArgMatches,
|
||||
) -> Result<(), CommandError> {
|
||||
let repo_command = command.repo_helper(ui)?;
|
||||
let repo = repo_command.repo();
|
||||
for (name, branch_target) in repo.view().branches() {
|
||||
if let Some(local_target) = &branch_target.local_target {
|
||||
match local_target {
|
||||
RefTarget::Normal(id) => {
|
||||
write!(ui, "{}: ", name)?;
|
||||
let commit = repo.store().get_commit(id)?;
|
||||
ui.write_commit_summary(repo.as_repo_ref(), &commit)?;
|
||||
writeln!(ui)?;
|
||||
}
|
||||
RefTarget::Conflict { adds, removes } => {
|
||||
writeln!(ui, "{} (conflicted):", name)?;
|
||||
for id in removes {
|
||||
let commit = repo.store().get_commit(id)?;
|
||||
write!(ui, " - ")?;
|
||||
ui.write_commit_summary(repo.as_repo_ref(), &commit)?;
|
||||
writeln!(ui)?;
|
||||
}
|
||||
for id in adds {
|
||||
let commit = repo.store().get_commit(id)?;
|
||||
write!(ui, " + ")?;
|
||||
ui.write_commit_summary(repo.as_repo_ref(), &commit)?;
|
||||
writeln!(ui)?;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
writeln!(ui, "{} (deleted)", name)?;
|
||||
}
|
||||
|
||||
// TODO: Display information about remote branches, but probably only
|
||||
// those that have different targets than the local branch.
|
||||
// Maybe indicate how much the remotes are ahead/behind/
|
||||
// diverged.
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn cmd_evolve<'s>(
|
||||
ui: &mut Ui<'s>,
|
||||
command: &CommandHelper,
|
||||
|
@ -2685,6 +2732,8 @@ where
|
|||
cmd_backout(&mut ui, &command_helper, sub_matches)
|
||||
} else if let Some(sub_matches) = matches.subcommand_matches("branch") {
|
||||
cmd_branch(&mut ui, &command_helper, sub_matches)
|
||||
} else if let Some(sub_matches) = matches.subcommand_matches("branches") {
|
||||
cmd_branches(&mut ui, &command_helper, sub_matches)
|
||||
} else if let Some(sub_matches) = matches.subcommand_matches("evolve") {
|
||||
cmd_evolve(&mut ui, &command_helper, sub_matches)
|
||||
} else if let Some(sub_matches) = matches.subcommand_matches("operation") {
|
||||
|
|
Loading…
Reference in a new issue