diff options
Diffstat (limited to 'src/git.rs')
-rw-r--r-- | src/git.rs | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -2,7 +2,7 @@ use crate::{ parser::{GitReceivePackArgs, GitUploadPackArgs}, ShackleError, }; -use git2::{Repository, RepositoryInitMode, RepositoryInitOptions}; +use git2::{ErrorCode, Repository, RepositoryInitMode, RepositoryInitOptions}; use std::{fs, path::PathBuf, process::Command}; use user_info::{get_user_groups, get_username}; @@ -126,9 +126,15 @@ pub fn list() -> Result<Vec<RepoMetadata>, ShackleError> { if has_git_ext { if let Ok(repo) = Repository::open_bare(&path) { let config = repo.config()?.snapshot()?; - let shared_config = config.get_str("core.sharedRepository").ok(); // TODO: Could shis fail for other reasons? + let shared_config = config.get_str("core.sharedRepository").or_else(|e| { + if e.code() == ErrorCode::NotFound { + Ok("") + } else { + Err(e) + } + })?; let is_group_shared = - [Some("group"), Some("1"), Some("true")].contains(&shared_config); + [Some("group"), Some("1"), Some("true")].contains(&Some(shared_config)); if is_group_shared == is_checking_group { let description = if description_path.is_file() { |