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