From 315666bfea2d2e76d63d2931304d0d123be4134c Mon Sep 17 00:00:00 2001 From: tjh Date: Sat, 14 Jun 2025 20:15:40 +0100 Subject: [PATCH] fix: correctly handle repositories with only one commit Signed-off-by: tjh Change-Id: I6a6a69649d9e92d08262bf8f19babba0661e05b9 --- src/main.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) 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!( - "{: