mirror of
https://github.com/gitui-org/gitui
synced 2026-05-24 09:28:21 +00:00
45 lines
806 B
Rust
45 lines
806 B
Rust
use super::RepoPath;
|
|
use crate::{error::Result, sync::repository::repo};
|
|
use git2::RepositoryState;
|
|
use scopetime::scope_time;
|
|
|
|
///
|
|
#[derive(Debug, PartialEq, Eq)]
|
|
pub enum RepoState {
|
|
///
|
|
Clean,
|
|
///
|
|
Merge,
|
|
///
|
|
Rebase,
|
|
///
|
|
Revert,
|
|
///
|
|
Other,
|
|
}
|
|
|
|
impl From<RepositoryState> for RepoState {
|
|
fn from(state: RepositoryState) -> Self {
|
|
match state {
|
|
RepositoryState::Clean => Self::Clean,
|
|
RepositoryState::Merge => Self::Merge,
|
|
RepositoryState::Revert => Self::Revert,
|
|
RepositoryState::RebaseMerge => Self::Rebase,
|
|
_ => {
|
|
log::warn!("state not supported yet: {:?}", state);
|
|
Self::Other
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
///
|
|
pub fn repo_state(repo_path: &RepoPath) -> Result<RepoState> {
|
|
scope_time!("repo_state");
|
|
|
|
let repo = repo(repo_path)?;
|
|
|
|
let state = repo.state();
|
|
|
|
Ok(state.into())
|
|
}
|