git_assist/
git.rs

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}