1use git2::{Commit as GitCommit, Error as GitError, Oid, Repository as GitRepository};
2
3#[allow(dead_code)]
4pub(crate) fn commits_of_branch(
5 repository: &GitRepository,
6 branch: Oid,
7) -> Result<Vec<GitCommit<'_>>, GitError> {
8 let mut revwalk = repository.revwalk()?;
9
10 revwalk.push(branch)?;
11
12 revwalk.simplify_first_parent()?;
13
14 Ok(revwalk
15 .flatten()
16 .map(|oid| repository.find_commit(oid).unwrap())
17 .collect())
18}
19
20pub(crate) fn commits_in_range(
21 repository: &GitRepository,
22 range: (Oid, Oid),
23) -> Result<Vec<GitCommit<'_>>, GitError> {
24 let mut revwalk = repository.revwalk()?;
25
26 revwalk.hide(range.0)?;
27 revwalk.push(range.1)?;
28
29 revwalk.simplify_first_parent()?;
30
31 Ok(revwalk
32 .flatten()
33 .map(|oid| repository.find_commit(oid).unwrap())
34 .collect())
35}