-
-
Notifications
You must be signed in to change notification settings - Fork 401
Open
Labels
Description
Current behavior 😯
Modifying the walk order seems to no have no impact on the ordering of results.
gix = { version = "0.73", default-features = false, features = [
"tracing",
"parallel",
"blob-diff",
"revision",
] }
Expected behavior 🤔
Expect the ability to modify the ordering of commits being walked (oldest to newest, newest to oldest)
Git behavior
$ git log | grep commit | head -10
commit cc9b130baf883388b435f6ecc5a66fc2a5bbc15f
commit c29e363c90e74fc4f1946f611dd51faae665a93e
commit 49d57bc76209d98ce77a76edf5b2cdb7b7621625
commit aa089d42aba17a1ad0e740ea3a18651676c94295
commit cd32523ff348a8075542ed76a40dc6068ba1bdfc
commit f39a8fb99d6addff22736e7f17bb5ec2886c7dc3
commit 066e2ddaed3a979be8495c933bcc0b8d0d503496
commit 967d8befe574eea1a5d24834f8168a07f2822307
commit 528742a734ee2e31ae53d888d6e717238986cb6b
commit 32073fe7d118c73bd4a681f711bb885c4c95a431
Steps to reproduce 🕹
Specify "OldestFirst"...
let mut hasher = Xxh3::new();
let tree_len = commit_tree.len()?;
let mut seen = false;
let mut i = 0;
let sorting = Sorting::ByCommitTime(CommitTimeOrder::OldestFirst);
let revwalk_iter = git_repository.rev_walk([commit.id()]).sorting(sorting).all()?;
for revwalk in revwalk_iter {
for revs in &revwalk.into_iter().chunks(250) {
if ((i + 1) % 5_000) == 0 {
info!("{}: {} commits ingested", reference.name().shorten(), i + 1);
}
let mut batch = WriteBatch::default();
for rev in revs {
if let (false, Some(latest_indexed)) = (seen, &latest_indexed) {
if rev.id.as_bytes() == latest_indexed.get().hash.as_slice() {
seen = true;
}
continue;
}
seen = true;
let commit = rev.object()?;
let oid = commit.id;
let commit = commit.decode()?;
let author = commit.author();
let committer = commit.committer();
info!("Commit: {}", oid);2025-11-25T20:06:05.798860Z INFO index_update:update_repository_reflog{scan_path="/home/kallisti5/Code/greaseweazle"}:branch_index_update{relative_path=".git" force_reindex=false submodules={}}: gitore::database::indexer: master: Refreshing indexes
2025-11-25T20:06:05.798913Z INFO index_update:update_repository_reflog{scan_path="/home/kallisti5/Code/greaseweazle"}:branch_index_update{relative_path=".git" force_reindex=false submodules={}}: gitore::database::indexer: Commit: cc9b130baf883388b435f6ecc5a66fc2a5bbc15f
2025-11-25T20:06:05.799158Z INFO index_update:update_repository_reflog{scan_path="/home/kallisti5/Code/greaseweazle"}:branch_index_update{relative_path=".git" force_reindex=false submodules={}}: gitore::database::indexer: Commit: c29e363c90e74fc4f1946f611dd51faae665a93e
2025-11-25T20:06:05.799198Z INFO index_update:update_repository_reflog{scan_path="/home/kallisti5/Code/greaseweazle"}:branch_index_update{relative_path=".git" force_reindex=false submodules={}}: gitore::database::indexer: Commit: 49d57bc76209d98ce77a76edf5b2cdb7b7621625
Changing it to "Newest First"...
diff --git a/src/database/indexer.rs b/src/database/indexer.rs
index fcd2e31..4c2601b 100644
--- a/src/database/indexer.rs
+++ b/src/database/indexer.rs
@@ -264,7 +264,7 @@ fn branch_index_update(
let mut seen = false;
let mut i = 0;
- let sorting = Sorting::ByCommitTime(CommitTimeOrder::OldestFirst);
+ let sorting = Sorting::ByCommitTime(CommitTimeOrder::NewestFirst);
let revwalk_iter = git_repository.rev_walk([commit.id()]).sorting(sorting).all()?;
for revwalk in revwalk_iter {
for revs in &revwalk.into_iter().chunks(250) {2025-11-25T20:08:15.966311Z INFO index_update:update_repository_reflog{scan_path="/home/kallisti5/Code/greaseweazle"}:branch_index_update{relative_path=".git" force_reindex=false submodules={}}: gitore::database::indexer: master: Refreshing indexes
2025-11-25T20:08:15.966350Z INFO index_update:update_repository_reflog{scan_path="/home/kallisti5/Code/greaseweazle"}:branch_index_update{relative_path=".git" force_reindex=false submodules={}}: gitore::database::indexer: Commit: cc9b130baf883388b435f6ecc5a66fc2a5bbc15f
2025-11-25T20:08:15.966596Z INFO index_update:update_repository_reflog{scan_path="/home/kallisti5/Code/greaseweazle"}:branch_index_update{relative_path=".git" force_reindex=false submodules={}}: gitore::database::indexer: Commit: c29e363c90e74fc4f1946f611dd51faae665a93e
2025-11-25T20:08:15.966637Z INFO index_update:update_repository_reflog{scan_path="/home/kallisti5/Code/greaseweazle"}:branch_index_update{relative_path=".git" force_reindex=false submodules={}}: gitore::database::indexer: Commit: 49d57bc76209d98ce77a76edf5b2cdb7b7621625