From 4e87da71e4d15fb8c547fab180ac52fe46ab343e Mon Sep 17 00:00:00 2001 From: Bahtiar `kalkin-` Gadimov Date: Sun, 14 May 2023 15:10:12 +0200 Subject: [PATCH] fix(next_by_topology): Correct the commit iteration order Iterating over `gix::revision::walk::Platform::all()` returns commits in the wrong order. The expected commit output order is the same as `git log --graph` ``` * 0a534f214a |\ | * ebcd820b65 | * b56e33210a | * 46ff9bbc93 | * 6db404e52d |/ * f79134e683 |\ | * 29daaad4ad |/ * dbeb4b38c9 |\ | * 2398fb5d9f | * c550167bec | * 8d6c064c26 ``` Similar iteration using `gix::traverse::Platform` without this patch ``` * 0a534f214a * f79134e683 | * ebcd820b65 * dbeb4b38c9 | * 29daaad4ad | * b56e33210a * 163f943697 | * 2398fb5d9f | * 46ff9bbc93 * 00f8b9701e * cca06c8bd7 | * c550167bec | * 6db404e52d | * 8d6c064c26 ``` --- gix-traverse/src/commit.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gix-traverse/src/commit.rs b/gix-traverse/src/commit.rs index 6e7e0c9e7c3..1904a715cd9 100644 --- a/gix-traverse/src/commit.rs +++ b/gix-traverse/src/commit.rs @@ -343,7 +343,7 @@ pub mod ancestors { Ok(gix_object::commit::ref_iter::Token::Parent { id }) => { let was_inserted = state.seen.insert(id); if was_inserted && (self.predicate)(&id) { - state.next.push_back((id, 0)); + state.next.push_front((id, 0)); } if matches!(self.parents, Parents::First) { break;