From 5766ea001f0c42889e044fc7ddcdad764af25915 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Mon, 28 Oct 2024 10:08:47 +0100 Subject: [PATCH] Prevent commit from being logged more than once --- gitoxide-core/src/repository/log.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gitoxide-core/src/repository/log.rs b/gitoxide-core/src/repository/log.rs index 035d5c06532..c6ea5177091 100644 --- a/gitoxide-core/src/repository/log.rs +++ b/gitoxide-core/src/repository/log.rs @@ -31,7 +31,7 @@ fn log_file(repo: gix::Repository, out: &mut dyn std::io::Write, path: BString) let topo = gix::traverse::commit::topo::Builder::from_iters(&repo.objects, [head.id], None::>) .build()?; - for info in topo { + 'outer: for info in topo { let info = info?; let commit = repo.find_commit(info.id).unwrap(); @@ -88,6 +88,11 @@ fn log_file(repo: gix::Repository, out: &mut dyn std::io::Write, path: BString) if !modifications.is_empty() { write_info(&repo, &mut *out, &info)?; + + // We continue because we’ve already determined that this commit is part of the + // file’s history, so there’s no need to compare it to its other parents. + + continue 'outer; } } }