diff --git a/src/main.rs b/src/main.rs index 4ed0c8f..dd6efcb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,6 +3,7 @@ use gix::Commit; use gix::ObjectId; use gix::Repository; use gix::bstr::BStr; +use gix::bstr::ByteSlice; use gix::date::Time; use gix::object::tree::EntryRef; use gix::objs::decode::Error as DecodeError; @@ -42,6 +43,14 @@ fn main() -> anyhow::Result<()> { rev_walk = rev_walk.with_boundary([stop_commit.id]); } + let output = |filename: &BStr, commit: &Commit| -> anyhow::Result<()> { + let id = commit.id; + let ts = format_ts(&commit.time()?, arguments.utc)?; + let message = commit.message()?.summary(); + println!("{filename: anyhow::Result<()> { let revision = revision?; let Some(&parent_id) = revision.parent_ids.first() else { + // The revision has no parents. Assume any remaining entries belong + // to this commit. + for entry in interested.drain() { + output(entry.as_bstr(), ¤t_commit)?; + } break; }; @@ -62,13 +76,7 @@ fn main() -> anyhow::Result<()> { let mut scanner = EntryScanner::new(current_tree.iter(), parent_tree.iter())?; while let Some(change) = scanner.next_change()? { if interested.remove(change.filename()) { - let id = revision.id; - println!( - "{: