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