use crate::{ bare::GitBare, cmd::oid::ObjectId, errors::{GitError, GitResult}, }; impl GitBare { pub fn blob_is_binary(&self, id: ObjectId) -> GitResult { let repo = self.gix_repo()?; let gix_id: gix::hash::ObjectId = (&id).try_into()?; let blob = repo .find_blob(gix_id) .map_err(|_| GitError::ObjectNotFound(id.as_str().to_string()))?; let check_len = std::cmp::min(8000, blob.data.len()); let is_binary = blob.data[..check_len].contains(&0); Ok(is_binary) } pub fn blob_exists(&self, id: ObjectId) -> GitResult { let repo = self.gix_repo()?; let gix_id: gix::hash::ObjectId = (&id).try_into()?; Ok(repo.has_object(gix_id)) } }