summaryrefslogtreecommitdiff
path: root/src/git.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/git.rs')
-rw-r--r--src/git.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/git.rs b/src/git.rs
index bfac79b..3e6ef98 100644
--- a/src/git.rs
+++ b/src/git.rs
@@ -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() {