git-api 0.1.1

git2-rs based utility library
Documentation
pub use git2::{Error, Repository};

/// 获取仓库的远程源
pub fn repo_remotes(repo: &Repository) -> Result<Vec<(String, String)>, Error> {
    let remotes = repo.remotes()?;
    let result = remotes
        .iter()
        .map(|remote_name| {
            let name = remote_name.unwrap_or_default().to_string();
            let remote = repo.find_remote(&name).unwrap();
            let url = remote.url().unwrap().into();
            (name, url)
        })
        .collect();
    Ok(result)
}

/// 获取仓库当前分支名
pub fn repo_current_branch(repo: &Repository) -> Result<Option<String>, Error> {
    let head = repo.head()?;
    if head.is_branch() {
        let name = head.name().map(|it| it.replacen("refs/heads/", "", 1));
        Ok(name)
    } else {
        Ok(None)
    }
}