wayver's git archive


a simple self-hosted git server
git clone https://git.wayver.dev/bile

src/utils/git/branch.rs@788f4460a8c003cb5018293ae250a8d8feaa2f1b

raw
Date Commit Message Author Files + -
2026-02-17 21:07 initial mvp wayverd 74 10800 0
...

1use git2::{Branch, BranchType, Reference};
2
3use crate::utils::git::Repository;
4
5impl Repository {
6    #[tracing::instrument(skip_all)]
7    pub fn branches(&self) -> crate::utils::error::Result<Vec<Reference<'_>>> {
8        let references = self.inner.references()?;
9
10        let branches = references
11            .filter_map(Result::ok)
12            .filter(Reference::is_branch)
13            .collect();
14
15        Ok(branches)
16    }
17
18    #[tracing::instrument(skip_all)]
19    pub fn branches_of_type(
20        &self,
21        typ: BranchType,
22    ) -> crate::utils::error::Result<Vec<Branch<'_>>> {
23        let branches = self
24            .inner
25            .branches(Some(typ))?
26            .filter_map(|x| if let Ok(x) = x { Some(x.0) } else { None })
27            .collect();
28
29        Ok(branches)
30    }
31}
32