Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 18 additions & 6 deletions src/indexer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -116,12 +116,24 @@ pub fn list_shas_in_range(repo: &gix::Repository, range: &str) -> Result<Vec<Str
.all()?
} else {
// Exclude commits reachable from from_spec
let from_commit = resolve_to_commit(repo, from_spec)?;
let from_id = from_commit.id().detach();
repo.rev_walk([to_id])
.with_hidden([from_id])
.sorting(Sorting::ByCommitTime(Default::default()))
.all()?
match resolve_to_commit(repo, from_spec) {
Ok(from_commit) => {
let from_id = from_commit.id().detach();
repo.rev_walk([to_id])
.with_hidden([from_id])
.sorting(Sorting::ByCommitTime(Default::default()))
.all()?
}
Err(e) => {
// Parent commit not found in local object store (shallow clone or root commit).
// Fall back to returning just the single target commit.
info!(
"Could not resolve '{}' ({}); falling back to single-commit indexing",
from_spec, e
);
return Ok(vec![to_id.to_string()]);
}
}
};

let mut shas = Vec::new();
Expand Down