gitui/asyncgit/src/sync/state.rs
2022-07-02 08:17:15 +02:00

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())
}