step fourty two: show, print commit message
This commit is contained in:
parent
26a8da76ef
commit
b79d4d0d2a
37
src/main.rs
37
src/main.rs
|
@ -70,6 +70,11 @@ fn main() {
|
||||||
.about("Move the current content and HEAD to given commit with dereferencing")
|
.about("Move the current content and HEAD to given commit with dereferencing")
|
||||||
.arg(Arg::with_name("commit").index(1).required(true)),
|
.arg(Arg::with_name("commit").index(1).required(true)),
|
||||||
)
|
)
|
||||||
|
.subcommand(
|
||||||
|
SubCommand::with_name("show")
|
||||||
|
.about("Show diff from a commit")
|
||||||
|
.arg(Arg::with_name("oid").index(1).default_value("@")),
|
||||||
|
)
|
||||||
.get_matches();
|
.get_matches();
|
||||||
|
|
||||||
match matches.subcommand_name() {
|
match matches.subcommand_name() {
|
||||||
|
@ -86,6 +91,7 @@ fn main() {
|
||||||
Some("branch") => branch(matches),
|
Some("branch") => branch(matches),
|
||||||
Some("status") => status(),
|
Some("status") => status(),
|
||||||
Some("reset") => reset(matches),
|
Some("reset") => reset(matches),
|
||||||
|
Some("show") => show(matches),
|
||||||
_ => println!("unknown sub command"),
|
_ => println!("unknown sub command"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -152,15 +158,7 @@ fn log_commits(matches: ArgMatches) {
|
||||||
for oid in base::iter_commits_and_parents(oids) {
|
for oid in base::iter_commits_and_parents(oids) {
|
||||||
let commit = base::get_commit(oid.clone());
|
let commit = base::get_commit(oid.clone());
|
||||||
|
|
||||||
let ref_str = if refs.contains_key(&oid) {
|
print_commit(oid, &commit, refs.clone());
|
||||||
refs.get_mut(&oid).unwrap().join(", ")
|
|
||||||
} else {
|
|
||||||
"".to_owned()
|
|
||||||
};
|
|
||||||
|
|
||||||
println!("commit {} {}", oid, ref_str);
|
|
||||||
println!("{}", commit.message);
|
|
||||||
println!("");
|
|
||||||
|
|
||||||
if commit.parent == "" {
|
if commit.parent == "" {
|
||||||
break;
|
break;
|
||||||
|
@ -260,3 +258,24 @@ fn reset(matches: ArgMatches) {
|
||||||
base::reset(oid);
|
base::reset(oid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn show(matches: ArgMatches) {
|
||||||
|
if let Some(cmd_matches) = matches.subcommand_matches("show") {
|
||||||
|
let oid = base::get_oid(cmd_matches.value_of("oid").unwrap().to_owned());
|
||||||
|
let commit = base::get_commit(oid.clone());
|
||||||
|
let refs: HashMap<String, Vec<String>> = HashMap::new();
|
||||||
|
print_commit(oid, &commit, refs)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn print_commit(oid: String, commit: &base::Commit, mut refs: HashMap<String, Vec<String>>) {
|
||||||
|
let ref_str = if refs.contains_key(&oid) {
|
||||||
|
refs.get_mut(&oid).unwrap().join(", ")
|
||||||
|
} else {
|
||||||
|
"".to_owned()
|
||||||
|
};
|
||||||
|
|
||||||
|
println!("commit {} {}", oid, ref_str);
|
||||||
|
println!("{}", commit.message);
|
||||||
|
println!("");
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue